푸터 콘텐츠로 바로가기
.NET 도움말

Jquery Datatable (How It Works For Developers)

Data presentation is a critical aspect of web development, and when dealing with tabular data, having an interactive and feature-rich table is essential. jQuery DataTables is a powerful JavaScript library that provides advanced functionality for creating dynamic and responsive tables. In this article, we'll explore how to integrate and use jQuery DataTables in an ASP.NET web application to enhance the presentation of tabular data.

How to Use jQuery DataTables in an ASP.NET Web App?

  1. Create or Open a Web Application.
  2. Install Entity Framework Packages.
  3. Add Model, DB Context, and Controller.
  4. Add DB Connection String and Set Up Configuration.
  5. Add Migration and Update Database.
  6. Add Client-Side Library of jQuery DataTables.
  7. Add HTML table and JavaScript code.
  8. Build and Run the Application.
  9. Export Data into Excel using IronXL for Excel Manipulation.

What is jQuery DataTables?

jQuery DataTables is a lightweight, flexible, and feature-rich jQuery plugin for handling tabular data. It offers a wide range of functionalities, such as sorting, searching, and pagination, making it an ideal choice for presenting large datasets in a user-friendly manner.

Client-Side Processing

In client-side processing, the browser is empowered to handle the dataset locally. jQuery DataTables, through its powerful features, allows for dynamic interaction and manipulation of the data directly within the user's browser. While this approach works seamlessly for smaller datasets, it may face challenges when handling extensive datasets due to potential performance bottlenecks and increased resource consumption.

In this article, we will explore client-side processing in an ASP.NET Razor Page application, highlighting the advantages it offers for smaller datasets and providing insights into potential considerations and optimizations to ensure a smooth and responsive user experience.

Getting started with jQuery DataTables in an ASP.NET Web Application

This article will use an ASP.NET Razor Page Web Application targeting .NET Framework 4.8. You may use Blazor, MVC, or Web Forms, as per your requirement.

The Code-First Approach will be used in this article. You may use the Database First Approach as per your preference. We need to install the following packages for using the Code First Approach.

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Design
  3. Microsoft.EntityFrameworkCore.SqlServer
  4. Microsoft.EntityFrameworkCore.Tools

Install the above packages by using the Install-Package command from the NuGet Package Manager Console or install them from the NuGet Package Manager solution by searching for them.

Let's set up our project by adding the Model class, ApplicationDbContext Class, Controller, Connection String, and services configuration in the Program.cs.

Add Model Class

I am using the Employee model class for this example. You may use it as per your requirement.

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;
}
$vbLabelText   $csharpLabel

Add ApplicationDbContext Class

We need to add the ApplicationDbContext class to set up 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; }
}
$vbLabelText   $csharpLabel

Add Employee Controller

Add the EmployeeController for creating the endpoint.

[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;
        }
    }
}
$vbLabelText   $csharpLabel

Here, we are using the HttpGet method, as we will be retrieving the complete data from the server on the client side, and implementing pagination, searching, and sorting on the client side. We are returning a JSON array that will be rendered on the client side.

Add Connection String

Add the following connection string in the appsettings.json file.

"ConnectionStrings": {
  "EmployeeDB": "Server=localserver\\SQLEXPRESS;Database=EmployeeDB;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;"
}

Add the following line in the Program.cs class under the webApplication.CreateBuilder() line to connect with SQL Server.

builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
    options.UseSqlServer(builder.Configuration.GetConnectionString("EmployeeDB"));
});
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
    options.UseSqlServer(builder.Configuration.GetConnectionString("EmployeeDB"));
});
$vbLabelText   $csharpLabel

Run Migration

The next step is to run the migration as we are using the Code First Approach. Run the following command in the Package Manager Console.

Add-Migration init
Add-Migration init
SHELL

This command will create a migration. Now, run the following command to apply this migration to the database.

update-database
update-database
SHELL

Now that our project is set and the database is ready, we just need to add the jQuery library and HTML tables to make our UI ready. We have used SQL Server as the data source in this example, but you may use any other database.

Add jQuery DataTables Library

We need to add the jQuery DataTables library, which is a table-enhancing plugin for the jQuery JavaScript library, in our project. We can add it by right-clicking on the project, selecting "Add", and then selecting "Add Client-Side Library". A small window will appear, where we can search for "jquery datatables" and install it, as shown below:

Add jQuery DataTables Library

Add HTML Table

Let's add an HTML table with an empty table body. We will add the required column headings while setting up the jQuery DataTable. Add the following code to the Index.cshtml file.

@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>
}

We need to add the EmployeeDatatable.js file inside the wwwroot/Js folder. In this file, we will have an Ajax call and advanced features of the jQuery DataTable such as filtration, pagination, searching, sorting, etc.

Create EmployeeDatatable.js File

Create an EmployeeDatatable.js file inside the wwwroot/Js folder. Add the following code.

$(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 }
        ]
    });
});
JAVASCRIPT

We have utilized the feature-rich jQuery DataTables library. This powerful jQuery plugin enables us to implement advanced features on the client side with minimal effort.

Now, build and run this application.

Output

We can see that we have a very interactive UI ready with the help of jQuery in ASP.NET. The data displayed is as follows:

jQuery DataTables Output

Now, pagination is implemented on the client side, therefore complete data is sent from the server as shown below:

Pagination

Output UI

We can search, sort, and change the page, all will be performed on the client side as shown below:

Output UI

Introduction to IronXL

IronXL for .NET Excel File Manipulation is a library that allows you to work with Excel files in .NET applications. It can create, read, edit, and save Excel documents in various formats such as XLS, XLSX, CSV, and TSV. It does not require Microsoft Office or Excel Interop to be installed. It supports .NET 5, Core, Framework, and Azure.

We often have a requirement to export data into Excel or CSV files. IronXL is the best choice in this case. Now, we will write code to export our data into an Excel file.

Install IronXL

Install the IronXL library in your project by entering the following command in the Package Manager Console.

Install-Package IronPdf

This will install IronXL and the required dependencies in our project. You may also directly download it from IronXL NuGet Package.

Export Data to Excel

Let's write code to convert our Employee List into an Excel file.

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");
}
$vbLabelText   $csharpLabel

We have created an Excel file from a list in a simple and easy way.

OUTPUT Excel File

IronXL provides comprehensive tutorials on creating XLSX files, code examples for reading Excel files, and detailed documentation to help you utilize its comprehensive API in the best way possible.

Conclusion

In conclusion, jQuery DataTables has emerged as a powerful asset for transforming the presentation of tabular data in ASP.NET web applications. Its lightweight yet feature-rich nature facilitates the creation of interactive tables, bringing sorting, searching, and pagination to the forefront. We explored the nuances of client-side processing, leveraging the browser's capabilities for smaller datasets while acknowledging potential challenges with larger data volumes. The step-by-step guide on setting up an ASP.NET Razor Page application and integrating jQuery DataTables provides developers with practical insights. Additionally, the introduction of IronXL as a seamless solution for Excel-related tasks adds a valuable layer to the toolkit, enabling efficient data export. Armed with these tools, developers can elevate the user experience by presenting data in a compelling and accessible manner.

IronXL offers various licensing options, depending on the number of developers, projects, and redistribution needs. The licenses are perpetual and include free support and updates.

자주 묻는 질문

JQuery 데이터테이블은 ASP.NET 웹 애플리케이션에서 데이터 표시를 어떻게 향상시킬 수 있나요?

jQuery 데이터테이블은 정렬, 검색, 페이지 매김과 같은 기능을 제공하여 데이터 표시를 향상시켜 사용자가 반응이 빠르고 사용자 친화적인 방식으로 대규모 데이터 세트와 더 쉽게 상호 작용할 수 있도록 합니다.

ASP.NET Razor Page 애플리케이션에서 jQuery 데이터 테이블을 통합하는 기본 단계는 무엇인가요?

ASP.NET Razor Page 애플리케이션에서 jQuery 데이터 테이블을 통합하려면 먼저 모델, DbContext 및 컨트롤러를 설정하고 데이터베이스 연결을 구성한 다음 Entity Framework의 코드 우선 접근 방식을 사용하여 데이터를 효율적으로 관리하기 위한 클라이언트 측 처리를 구현해야 합니다.

대규모 데이터 집합을 관리할 때 서버 측 처리가 jQuery DataTables에 어떤 이점이 있나요?

서버 측 처리는 대량의 데이터로 인해 속도가 느려질 수 있는 클라이언트 측 처리와 달리 데이터 작업을 서버로 오프로드하여 대규모 데이터 집합을 처리할 때 성능과 효율성을 향상시킴으로써 jQuery 데이터테이블의 이점을 제공합니다.

ASP.NET 애플리케이션에서 Excel로 데이터를 내보낼 때 IronXL은 어떤 역할을 하나요?

IronXL을 사용하면 개발자가 새 통합 문서를 만들고 데이터 집합의 데이터 행을 채운 다음 Excel 파일로 저장하여 데이터를 Excel로 내보낼 수 있습니다. 이 도구는 Microsoft Office 없이도 Excel 파일 조작을 간소화합니다.

Microsoft Office 없이 .NET 애플리케이션에서 Excel 파일로 작업할 수 있나요?

예, IronXL을 사용하면 .NET 애플리케이션이 Microsoft Office와 독립적으로 Excel 파일로 작업할 수 있으며 XLS, XLSX, CSV 및 TSV와 같은 다양한 형식을 지원합니다.

.NET 프로젝트에서 IronXL을 사용하기 위한 라이선스 옵션은 무엇인가요?

IronXL은 개발자 수, 프로젝트 및 배포 요구 사항에 따라 다양한 라이선스 옵션을 제공합니다. 라이선스는 영구적이며 무료 지원 및 업데이트가 포함됩니다.

ASP.NET에서 jQuery 데이터 테이블과 함께 코드 우선 접근 방식을 사용하면 어떤 이점이 있나요?

ASP.NET의 코드 우선 접근 방식은 데이터베이스 모델 및 컨텍스트의 간편한 설정 및 구성을 지원하여 동적 데이터 관리 및 향상된 상호 작용을 위한 프런트엔드 데이터 테이블과의 통합을 가능하게 합니다.

ASP.NET 애플리케이션에서 jQuery 데이터 테이블과 관련된 일반적인 문제를 어떻게 해결할 수 있나요?

스크립트 및 스타일시트가 올바르게 포함되었는지 확인하고, 데이터 소스 경로를 확인하고, 콘솔 오류에서 JavaScript 문제를 확인하고, 적절한 서버 측 처리 설정을 확인함으로써 jQuery 데이터테이블의 일반적인 문제를 해결할 수 있습니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.