Jquery Datatable (jak to działa dla programistów)
Prezentacja danych jest kluczowym aspektem tworzenia stron internetowych, a w przypadku danych tabelarycznych niezbędna jest interaktywna i bogata w funkcje tabela. jQuery DataTables to potężna biblioteka JavaScript, która zapewnia zaawansowane funkcje do tworzenia dynamicznych i responsywnych tabel. W tym artykule omówimy, jak zintegrować i używać jQuery DataTables w aplikacji internetowej ASP.NET w celu ulepszenia prezentacji danych tabelarycznych.
Jak korzystać z jQuery DataTables w aplikacji internetowej ASP.NET?
- Utwórz lub otwórz aplikację internetową.
- Zainstaluj pakiety Entity Framework.
- Dodaj model, kontekst bazy danych i kontroler.
- Dodaj ciąg połączenia z bazą danych i skonfiguruj ustawienia.
- Dodaj migrację i aktualizację bazy danych.
- Dodaj bibliotekę jQuery DataTables po stronie klienta.
- Dodaj tabelę HTML i kod JavaScript.
- Skompiluj i uruchom aplikację.
- Eksportuj dane do Excela za pomocą IronXL do obróbki arkuszy kalkulacyjnych.
Czym jest jQuery DataTables?
jQuery DataTables to lekka, elastyczna i bogata w funkcje wtyczka jQuery do obsługi danych tabelarycznych. Oferuje szeroki zakres funkcji, takich jak sortowanie, wyszukiwanie i paginacja, co czyni go idealnym wyborem do prezentowania dużych zbiorów danych w przyjazny dla użytkownika sposób.
Przetwarzanie po stronie klienta
W przetwarzaniu po stronie klienta przeglądarka ma możliwość obsługi zbioru danych lokalnie. jQuery DataTables, dzięki swoim zaawansowanym funkcjom, umożliwia dynamiczną interakcję i manipulację danymi bezpośrednio w przeglądarce użytkownika. Chociaż podejście to sprawdza się bez zarzutu w przypadku mniejszych zbiorów danych, może napotkać trudności podczas obsługi rozległych zbiorów danych ze względu na potencjalne wąskie gardła wydajnościowe i zwiększone zużycie zasobów.
W tym artykule omówimy przetwarzanie po stronie klienta w aplikacji ASP.NET Razor Page, podkreślając zalety, jakie oferuje ono w przypadku mniejszych zbiorów danych, oraz przedstawiając potencjalne kwestie do rozważenia i optymalizacje zapewniające płynne i responsywne doświadczenie użytkownika.
Pierwsze kroki z jQuery DataTables w aplikacji internetowej ASP.NET
W tym artykule wykorzystamy aplikację internetową ASP.NET Razor Page przeznaczoną dla platformy .NET Framework 4.8. W zależności od potrzeb można użyć Blazor, MVC lub Web Forms.
W niniejszym artykule zostanie zastosowane podejście "Code-First". Możesz skorzystać z podejścia Database First, jeśli wolisz. Aby korzystać z podejścia Code First, musimy zainstalować następujące pakiety.
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
Zainstaluj powyższe pakiety za pomocą polecenia Install-Package z konsoli NuGet Package Manager lub zainstaluj je z rozwiązania NuGet Package Manager, wyszukując je.
Skonfigurujmy nasz projekt, dodając klasę Model, klasę ApplicationDbContext, kontroler, ciąg połączenia oraz konfigurację usług w pliku Program.cs.
Dodaj klasę modelu
W tym przykładzie używam klasy modelu Employee. Możesz z niego korzystać zgodnie ze swoimi wymaganiami.
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string PhoneNumber { get; set; } = string.Empty;
public string Gender { get; set; } = string.Empty;
public string Designation { get; set; } = string.Empty;
}
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string PhoneNumber { get; set; } = string.Empty;
public string Gender { get; set; } = string.Empty;
public string Designation { get; set; } = string.Empty;
}
Public Class Employee
Public Property Id() As Integer
Public Property FirstName() As String = String.Empty
Public Property LastName() As String = String.Empty
Public Property Email() As String = String.Empty
Public Property PhoneNumber() As String = String.Empty
Public Property Gender() As String = String.Empty
Public Property Designation() As String = String.Empty
End Class
Dodaj klasę ApplicationDbContext
Musimy dodać klasę ApplicationDbContext, aby skonfigurować Entity Framework.
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Employee> Employees { get; set; }
}
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Employee> Employees { get; set; }
}
Public Class ApplicationDbContext
Inherits DbContext
Public Sub New(ByVal options As DbContextOptions(Of ApplicationDbContext))
MyBase.New(options)
End Sub
Public Property Employees() As DbSet(Of Employee)
End Class
Dodaj kontroler pracowników
Dodaj EmployeeController w celu utworzenia punktu końcowego.
[Route("api/[controller]")]
[ApiController]
public class EmployeeController : ControllerBase
{
private readonly ApplicationDbContext _context;
public EmployeeController(ApplicationDbContext context)
{
_context = context;
}
[HttpGet]
public IActionResult GetEmployees()
{
try
{
var employeeData = _context.Employees.ToList();
var jsonData = new { data = employeeData };
return Ok(jsonData);
}
catch (Exception ex)
{
// Log exception here
throw;
}
}
}
[Route("api/[controller]")]
[ApiController]
public class EmployeeController : ControllerBase
{
private readonly ApplicationDbContext _context;
public EmployeeController(ApplicationDbContext context)
{
_context = context;
}
[HttpGet]
public IActionResult GetEmployees()
{
try
{
var employeeData = _context.Employees.ToList();
var jsonData = new { data = employeeData };
return Ok(jsonData);
}
catch (Exception ex)
{
// Log exception here
throw;
}
}
}
<Route("api/[controller]")>
<ApiController>
Public Class EmployeeController
Inherits ControllerBase
Private ReadOnly _context As ApplicationDbContext
Public Sub New(ByVal context As ApplicationDbContext)
_context = context
End Sub
<HttpGet>
Public Function GetEmployees() As IActionResult
Try
Dim employeeData = _context.Employees.ToList()
Dim jsonData = New With {Key .data = employeeData}
Return Ok(jsonData)
Catch ex As Exception
' Log exception here
Throw
End Try
End Function
End Class
W tym przypadku stosujemy metodę HttpGet, ponieważ będziemy pobierać kompletne dane z serwera po stronie klienta oraz implementować paginację, wyszukiwanie i sortowanie po stronie klienta. Zwracamy tablicę JSON, która zostanie wyrenderowana po stronie klienta.
Dodaj ciąg połączenia
Dodaj następujący ciąg połączenia do pliku appsettings.json.
"ConnectionStrings": {
"EmployeeDB": "Server=localserver\\SQLEXPRESS;Database=EmployeeDB;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;"
}
Dodaj następujący wiersz w klasie Program.cs poniżej wiersza webApplication.CreateBuilder(), aby nawiązać połączenie z serwerem SQL Server.
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("EmployeeDB"));
});
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("EmployeeDB"));
});
builder.Services.AddDbContext(Of ApplicationDbContext)(Sub(options)
options.UseSqlServer(builder.Configuration.GetConnectionString("EmployeeDB"))
End Sub)
Uruchom migrację
Kolejnym krokiem jest przeprowadzenie migracji, ponieważ stosujemy podejście Code First. Uruchom następujące polecenie w konsoli menedżera pakietów.
Add-Migration init
Add-Migration init
To polecenie utworzy migrację. Teraz uruchom następujące polecenie, aby zastosować tę migrację do bazy danych.
update-database
update-database
Teraz, gdy nasz projekt jest już skonfigurowany, a baza danych gotowa, wystarczy dodać bibliotekę jQuery i tabele HTML, aby przygotować interfejs użytkownika. W tym przykładzie jako źródło danych wykorzystaliśmy SQL Server, ale można użyć dowolnej innej bazy danych.
Dodaj bibliotekę jQuery DataTables
Musimy dodać do naszego projektu bibliotekę jQuery DataTables, która jest wtyczką rozszerzającą możliwości tabel dla biblioteki JavaScript jQuery. Możemy ją dodać, klikając prawym przyciskiem myszy na projekt, wybierając "Dodaj", a następnie "Dodaj bibliotekę po stronie klienta". Pojawi się małe okienko, w którym możemy wyszukać "jquery datatables" i zainstalować je, jak pokazano poniżej:

Dodaj tabelę HTML
Dodajmy tabelę HTML z pustym treścią. Dodamy wymagane nagłówki kolumn podczas konfiguracji jQuery DataTable. Dodaj poniższy kod do pliku Index.cshtml.
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<link href="~/lib/datatables/css/dataTables.bootstrap4.min.css" rel="stylesheet" />
<div class="container">
<br />
<div style="width:90%; margin:0 auto;">
<table id="employeeDatatable" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
</table>
</div>
</div>
@section Scripts
{
<script src="~/lib/datatables/js/jquery.dataTables.min.js"></script>
<script src="~/lib/datatables/js/dataTables.bootstrap4.min.js"></script>
<script src="~/js/EmployeeDatatable.js"></script>
}
Musimy dodać plik EmployeeDatatable.js do folderu wwwroot/Js. W tym pliku znajdziemy wywołanie Ajax oraz zaawansowane funkcje jQuery DataTable, takie jak filtrowanie, paginacja, wyszukiwanie, sortowanie itp.
Utwórz plik EmployeeDatatable.js
Utwórz plik EmployeeDatatable.js w folderze wwwroot/Js. Dodaj następujący kod.
$(document).ready(function () {
$("#employeeDatatable").DataTable({
"processing": true,
"serverSide": false,
"filter": true,
"ajax": {
"url": "/api/Employee",
"type": "GET",
"datatype": "json"
},
"columnDefs": [{
"targets": [0],
"visible": false,
"searchable": false
}],
"columns": [
{ "data": "id", "title": "Employee ID", "name": "Employee ID", "autoWidth": true },
{ "data": "firstName", "title": "First Name", "name": "First Name", "autoWidth": true },
{ "data": "lastName", "title": "Last Name", "name": "Last Name", "autoWidth": true },
{ "data": "email", "title": "Email", "name": "Email", "autoWidth": true },
{ "data": "phoneNumber", "title": "Phone Number", "name": "Phone Number", "autoWidth": true },
{ "data": "gender", "title": "Gender", "name": "Gender", "autoWidth": true },
{ "data": "designation", "title": "Designation", "name": "Designation", "autoWidth": true }
]
});
});
$(document).ready(function () {
$("#employeeDatatable").DataTable({
"processing": true,
"serverSide": false,
"filter": true,
"ajax": {
"url": "/api/Employee",
"type": "GET",
"datatype": "json"
},
"columnDefs": [{
"targets": [0],
"visible": false,
"searchable": false
}],
"columns": [
{ "data": "id", "title": "Employee ID", "name": "Employee ID", "autoWidth": true },
{ "data": "firstName", "title": "First Name", "name": "First Name", "autoWidth": true },
{ "data": "lastName", "title": "Last Name", "name": "Last Name", "autoWidth": true },
{ "data": "email", "title": "Email", "name": "Email", "autoWidth": true },
{ "data": "phoneNumber", "title": "Phone Number", "name": "Phone Number", "autoWidth": true },
{ "data": "gender", "title": "Gender", "name": "Gender", "autoWidth": true },
{ "data": "designation", "title": "Designation", "name": "Designation", "autoWidth": true }
]
});
});
Wykorzystaliśmy bogatą w funkcje bibliotekę jQuery DataTables. Ta potężna wtyczka jQuery pozwala nam wdrażać zaawansowane funkcje po stronie klienta przy minimalnym wysiłku.
Teraz skompiluj i uruchom tę aplikację.
Wynik
Widzimy, że dzięki jQuery w ASP.NET mamy gotowy, bardzo interaktywny interfejs użytkownika. Wyświetlane dane są następujące:

Obecnie paginacja jest realizowana po stronie klienta, dlatego kompletne dane są wysyłane z serwera, jak pokazano poniżej:

Interfejs użytkownika
Możemy wyszukiwać, sortować i zmieniać stronę, a wszystko to będzie wykonywane po stronie klienta, jak pokazano poniżej:

Wprowadzenie do IronXL
IronXL for .NET Excel File Manipulation to biblioteka umożliwiająca pracę z plikami Excel w aplikacjach .NET. Umożliwia tworzenie, odczytywanie, edytowanie i zapisywanie dokumentów Excel w różnych formatach, takich jak XLS, XLSX, CSV i TSV. Nie wymaga instalacji pakietu Microsoft Office ani interfejsu Excel Interop. Obsługuje .NET 5, .NET Core, Framework i Azure.
Często mamy potrzebę eksportowania danych do plików Excel lub CSV. W tym przypadku najlepszym wyborem jest IronXL. Teraz napiszemy kod, aby wyeksportować nasze dane do pliku Excel.
Zainstaluj IronXL
Zainstaluj bibliotekę IronXL w swoim projekcie, wpisując następujące polecenie w konsoli menedżera pakietów.
Install-Package IronPdf
Spowoduje to zainstalowanie IronXL i wymaganych zależności w naszym projekcie. Można go również pobrać bezpośrednio z pakietu IronXL NuGet.
Eksportuj dane do Excela
Napiszmy kod, aby przekonwertować naszą listę pracowników do pliku Excel.
public void ExportToExcel(List<Employee> employeeList)
{
// Create a new workbook instance
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
// Get the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;
// Add Header Row
ws["A1"].Value = "Employee ID";
ws["B1"].Value = "First Name";
ws["C1"].Value = "Last Name";
ws["D1"].Value = "Designation";
ws["E1"].Value = "Gender";
ws["F1"].Value = "Phone Number";
ws["G1"].Value = "Email";
int rowCount = 2;
// Add Data Rows
foreach (Employee employee in employeeList)
{
ws["A" + rowCount].Value = employee.Id.ToString();
ws["B" + rowCount].Value = employee.FirstName;
ws["C" + rowCount].Value = employee.LastName;
ws["D" + rowCount].Value = employee.Designation;
ws["E" + rowCount].Value = employee.Gender;
ws["F" + rowCount].Value = employee.PhoneNumber;
ws["G" + rowCount].Value = employee.Email;
rowCount++;
}
// Save the workbook as an Excel file
wb.SaveAs("Employee.xlsx");
}
public void ExportToExcel(List<Employee> employeeList)
{
// Create a new workbook instance
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
// Get the default worksheet
WorkSheet ws = wb.DefaultWorkSheet;
// Add Header Row
ws["A1"].Value = "Employee ID";
ws["B1"].Value = "First Name";
ws["C1"].Value = "Last Name";
ws["D1"].Value = "Designation";
ws["E1"].Value = "Gender";
ws["F1"].Value = "Phone Number";
ws["G1"].Value = "Email";
int rowCount = 2;
// Add Data Rows
foreach (Employee employee in employeeList)
{
ws["A" + rowCount].Value = employee.Id.ToString();
ws["B" + rowCount].Value = employee.FirstName;
ws["C" + rowCount].Value = employee.LastName;
ws["D" + rowCount].Value = employee.Designation;
ws["E" + rowCount].Value = employee.Gender;
ws["F" + rowCount].Value = employee.PhoneNumber;
ws["G" + rowCount].Value = employee.Email;
rowCount++;
}
// Save the workbook as an Excel file
wb.SaveAs("Employee.xlsx");
}
Public Sub ExportToExcel(ByVal employeeList As List(Of Employee))
' Create a new workbook instance
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Get the default worksheet
Dim ws As WorkSheet = wb.DefaultWorkSheet
' Add Header Row
ws("A1").Value = "Employee ID"
ws("B1").Value = "First Name"
ws("C1").Value = "Last Name"
ws("D1").Value = "Designation"
ws("E1").Value = "Gender"
ws("F1").Value = "Phone Number"
ws("G1").Value = "Email"
Dim rowCount As Integer = 2
' Add Data Rows
For Each employee As Employee In employeeList
ws("A" & rowCount).Value = employee.Id.ToString()
ws("B" & rowCount).Value = employee.FirstName
ws("C" & rowCount).Value = employee.LastName
ws("D" & rowCount).Value = employee.Designation
ws("E" & rowCount).Value = employee.Gender
ws("F" & rowCount).Value = employee.PhoneNumber
ws("G" & rowCount).Value = employee.Email
rowCount += 1
Next employee
' Save the workbook as an Excel file
wb.SaveAs("Employee.xlsx")
End Sub
W prosty i łatwy sposób stworzyliśmy plik Excel na podstawie listy.

IronXL udostępnia obszerne samouczki dotyczące tworzenia plików XLSX, przykłady kodu do odczytu plików Excel oraz szczegółową dokumentację, która pomoże Ci jak najlepiej wykorzystać jego rozbudowane API.
Wnioski
Podsumowując, jQuery DataTables stało się potężnym narzędziem do przekształcania prezentacji danych tabelarycznych w aplikacjach internetowych ASP.NET. Jego lekkość i bogactwo funkcji ułatwia tworzenie interaktywnych tabel, kładąc nacisk na sortowanie, wyszukiwanie i paginację. Zbadaliśmy niuanse przetwarzania po stronie klienta, wykorzystując możliwości przeglądarki w przypadku mniejszych zbiorów danych, jednocześnie uwzględniając potencjalne wyzwania związane z większymi ilościami danych. Przewodnik krok po kroku dotyczący konfiguracji aplikacji ASP.NET Razor Page i integracji jQuery DataTables dostarcza programistom praktycznych wskazówek. Ponadto wprowadzenie IronXL jako płynnego rozwiązania do zadań związanych z Excelem stanowi cenne uzupełnienie zestawu narzędzi, umożliwiając wydajny eksport danych. Dzięki tym narzędziom programiści mogą poprawić komfort użytkowania, prezentując dane w atrakcyjny i przystępny sposób.
IronXL oferuje różne opcje licencyjne w zależności od liczby programistów, projektów i potrzeb związanych z redystrybucją. Licencje są bezterminowe i obejmują bezpłatną pomoc techniczną oraz aktualizacje.
Często Zadawane Pytania
W jaki sposób jQuery DataTables może usprawnić prezentację danych w aplikacjach internetowych ASP.NET?
jQuery DataTables usprawnia prezentację danych, oferując funkcje takie jak sortowanie, wyszukiwanie i paginacja, które ułatwiają użytkownikom interakcję z dużymi zbiorami danych w responsywny i przyjazny dla użytkownika sposób.
Jakie są podstawowe kroki integracji jQuery DataTables w aplikacji ASP.NET Razor Page?
Aby zintegrować jQuery DataTables z aplikacją ASP.NET Razor Page, należy najpierw skonfigurować model, DbContext i kontroler, skonfigurować połączenie z bazą danych oraz zaimplementować przetwarzanie po stronie klienta w celu efektywnego zarządzania danymi przy użyciu podejścia Code-First z Entity Framework.
W jaki sposób przetwarzanie po stronie serwera przynosi korzyści jQuery DataTables podczas zarządzania dużymi zbiorami danych?
Przetwarzanie po stronie serwera przynosi korzyści jQuery DataTables poprzez przeniesienie operacji na serwer, co poprawia wydajność i efektywność podczas pracy z dużymi zbiorami danych, w przeciwieństwie do przetwarzania po stronie klienta, które może spowolnić działanie przy dużych ilościach danych.
Jaką rolę odgrywa IronXL w eksportowaniu danych do programu Excel z aplikacji ASP.NET?
IronXL pozwala programistom eksportować dane do Excela poprzez utworzenie nowego skoroszytu, wypełnienie go wierszami danych z zestawu danych i zapisanie go jako plik Excel. Ułatwia to pracę z plikami Excel bez konieczności korzystania z pakietu Microsoft Office.
Czy można pracować z plikami Excel w aplikacjach .NET bez pakietu Microsoft Office?
Tak, IronXL umożliwia aplikacjom .NET pracę z plikami Excel niezależnie od pakietu Microsoft Office, obsługując różne formaty, takie jak XLS, XLSX, CSV i TSV.
Jakie są opcje licencyjne dotyczące korzystania z IronXL w projektach .NET?
IronXL oferuje różne opcje licencyjne w zależności od liczby programistów, projektów i wymagań dotyczących dystrybucji. Licencje są wieczyste i obejmują bezpłatną pomoc techniczną oraz aktualizacje.
Jakie są zalety stosowania podejścia Code-First w ASP.NET z jQuery DataTables?
Podejście Code-First w ASP.NET z jQuery DataTables umożliwia łatwą konfigurację modelu bazy danych i kontekstu, co pozwala na dynamiczne zarządzanie danymi oraz integrację z front-endowymi DataTables w celu zwiększenia interaktywności.
Jak rozwiązywać typowe problemy związane z jQuery DataTables w aplikacji ASP.NET?
Typowe problemy związane z jQuery DataTables można rozwiązać, upewniając się, że skrypty i arkusze stylów zostały poprawnie dołączone, weryfikując ścieżki źródeł danych, sprawdzając błędy konsoli pod kątem problemów z JavaScript oraz potwierdzając prawidłową konfigurację przetwarzania po stronie serwera.




