IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Datatables .NET (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

Os desenvolvedores ASP.NET frequentemente buscam maneiras eficientes de apresentar dados tabulares ou tabelas HTML com recursos avançados, como classificação, pesquisa e paginação. DataTables .NET é uma poderosa biblioteca jQuery e JavaScript , além de uma ferramenta altamente flexível que facilita a criação de tabelas interativas e ricas em recursos em aplicações web. Neste artigo, exploraremos como integrar os arquivos de distribuição do DataTables .NET , uma biblioteca de aprimoramento de tabelas para processamento no servidor, em um projeto ASP.NET para melhorar a apresentação e a experiência do usuário com dados tabulares.

Como usar o DataTables em uma aplicação web ASP.NET ?

  1. Criar uma aplicação web ASP.NET
  2. Adicione o pacote de estilização do lado do cliente do DataTables
  3. Instale os pacotes do Entity Framework Core, apenas o software principal.
  4. Adicione a classe do modelo, o controlador e a página Razor .
  5. Adicione o código JavaScript no arquivo JS.
  6. Configurar a configuração
  7. Construir e executar o programa
  8. Exporte os dados para um arquivo do Excel usando o IronXL para Exportação de Dados do Excel.

O que é DataTables .NET?

DataTables .NET é uma biblioteca JavaScript jQuery que permite criar e manipular tabelas interativas em aplicações .NET . É baseado no plugin jQuery DataTables, que fornece recursos abrangentes de API, como paginação, classificação, filtragem e rolagem para tabelas HTML dinâmicas e estáticas. Trata-se de uma biblioteca para aprimoramento de tabelas que pode trabalhar com diversas fontes de dados, como bancos de dados SQL, AJAX ou objetos em memória.

Processamento do lado do servidor

Considere um cenário em que você tenha um endpoint de API que forneça um vasto conjunto de dados de produtos. A abordagem padrão envolve o jQuery DataTables fazendo uma chamada AJAX para esta API, obtendo uma lista de produtos em formato JSON e renderizando uma tabela HTML. Isso é conhecido como processamento do lado do cliente, que é eficiente para conjuntos de dados menores, normalmente variando de 100 a 1000 registros. No entanto, o que acontece quando o conjunto de dados se expande para 10.000 registros ou mais?

Ao lidar com um número substancial de registros, torna-se impraticável enviar todo o conjunto de dados para o navegador de uma só vez. Transmitir 10.000 registros de uma só vez não só desperdiça largura de banda, como também sobrecarrega os recursos do navegador. Nesses casos, uma abordagem alternativa, o processamento no servidor, torna-se crucial para otimizar o desempenho.

No processamento do lado do servidor, em vez de enviar o conjunto de dados completo, a API transmite os dados em partes gerenciáveis, normalmente paginadas com cerca de 50 registros por página. Ao fazer isso, o tempo de carregamento é significativamente melhorado, já que o jQuery DataTables agora carrega um número modesto de registros (~50) em vez de lidar com todo o conjunto de dados de uma só vez. Essa abordagem reduz o uso de CPU e largura de banda, criando uma interação mais eficiente entre a API e o DataTable.

Neste artigo, exploraremos a implementação do processamento no lado do servidor em uma aplicação ASP.NET Razor Page, demonstrando como lidar e exibir conjuntos de dados extensos de forma eficiente, ao mesmo tempo que se melhora o desempenho geral da sua aplicação web.

Introdução ao DataTables .NET no ASP.NET 8

Para começar, precisamos adicionar a biblioteca DataTables .NET Client Side ao nosso projeto. Este artigo utilizará o projeto de aplicativo Web ASP.NET Core (Razor Pages) com .NET 8. Você pode usar qualquer projeto de aplicativo Web de acordo com suas necessidades.

Para adicionar uma biblioteca do lado do cliente, clique com o botão direito do mouse em Solução > Adicionar > Biblioteca do lado do cliente e procure por tabelas de dados, conforme mostrado abaixo.

DataTables.NET (Como funciona para desenvolvedor): Figura 1 - Adicionar biblioteca do lado do cliente

Agora, precisamos adicionar a classe do modelo, o contexto do banco de dados, o controlador, a tabela HTML e a chamada AJAX.

Mas antes disso, precisamos instalar os pacotes NuGet do Entity Framework para conectar nossa aplicação ao banco de dados. Este artigo utilizará a abordagem Code First, mas você pode usar a abordagem Database First conforme sua preferência.

Instale os seguintes pacotes hospedados localmente:

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

Instale o pacote acima usando o comando Install-Package no Console do Gerenciador de Pacotes NuGet ou instale-o a partir da solução do Gerenciador de Pacotes NuGet, pesquisando-o.

Adicionar Classe de Modelo

Neste exemplo, estou usando a classe Product Model, mas você pode usá-la conforme sua necessidade.

public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; } = string.Empty;
    public string ProductPrice { get; set; } = string.Empty;
    public string ProductWeight { get; set; } = string.Empty;
    public string ProductDescription { get; set; } = string.Empty;
    public DateTime ProductManufacturingDate { get; set; }
    public DateTime ProductExpiryDate { get; set; }
}

Adicionar a classe ApplicationDBContext

public class ApplicationDBContext : DbContext
{
    public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
    {
    }
    public DbSet<Product> Products { get; set; }
}

Adicionar controles de interação avançados

Adicionaremos o ProductDatatables.js dentro da pasta wwwroot/js para adicionar controles avançados, como paginação, pesquisa, etc.

// Initialize the DataTables plugin for the HTML element with 'productDatatable' ID
$(document).ready(function () {
    $("#productDatatable").DataTable({
        "processing": true, // Enable processing indicator
        "serverSide": true, // Enable server-side processing
        "ajax": {
            "url": "/api/Product", // API endpoint for fetching product data
            "type": "POST",
            "datatype": "json"
        },
        "columnDefs": [{
            // Define properties for columns
            "targets": [0],
            "visible": false, // Hide the 'Id' column
            "searchable": false // Disable searching for the 'Id' column
        }],
        "columns": [
            { "data": "id", "name": "Id", "autoWidth": true },
            { "data": "productName", "name": "ProductName", "autoWidth": true },
            { "data": "productPrice", "name": "ProductPrice", "autoWidth": true },
            { "data": "productWeight", "name": "ProductWeight", "autoWidth": true },
            { "data": "productDescription", "name": "ProductDescription", "autoWidth": true },
            { "data": "productManufacturingDate", "name": "ProductManufacturingDate", "autoWidth": true },
            { "data": "productExpiryDate", "name": "ProductExpiryDate", "autoWidth": true },
            {
                // Add a 'Delete' button with an onclick event for deleting the product
                "render": function (data, type, row) { 
                    return "<a href='#' class='btn btn-danger' onclick=DeleteProduct('" + row.id + "');>Delete</a>"; 
                }
            }
        ]
    });
});
JavaScript

Agora, precisamos adicionar uma tabela HTML.

Adicionar tabela HTML

Escreva o seguinte código no arquivo index.cshtml para adicionar uma página HTML estática.

@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="productDatatable" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Product Name</th>
                    <th>Product Price</th>
                    <th>Product Weight</th>
                    <th>Product Description</th>
                    <th>Product Manufacturing Date</th>
                    <th>Product Expiry Date</th>
                    <th>Actions</th>
                </tr>
            </thead>
        </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/ProductDatatable.js"></script>
}
Text

Precisamos adicionar o controlador.

Adicionar Controlador de Produto

Adicione um controlador de produto para criar solicitações de pull diretas e em endpoints.

[Route("api/[controller]")]
[ApiController]
public class ProductController : ControllerBase
{
    private readonly ApplicationDBContext context;
    public ProductController(ApplicationDBContext context)
    {
        this.context = context;
    }

    [HttpPost]
    public IActionResult GetProducts()
    {
        try
        {
            var draw = Request.Form["draw"].FirstOrDefault();
            var start = Request.Form["start"].FirstOrDefault();
            var length = Request.Form["length"].FirstOrDefault();
            var searchValue = Request.Form["search[value]"].FirstOrDefault();
            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;
            int recordsTotal = 0;
            var productData = context.Products.ToLis();

            // Filtering data based on provided search value
            if (!string.IsNullOrEmpty(searchValue))
            {
                productData = productData.Where(m => m.ProductName.Contains(searchValue)
                                            || m.ProductDescription.Contains(searchValue)
                                            || m.Id.ToString().Contains(searchValue)).ToList();
            }
            
            recordsTotal = productData.Count();
            var data = productData.Skip(skip).Take(pageSize).ToList();
            var jsonData = new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data };
            return Ok(jsonData);
        }
        catch (Exception)
        {
            throw;
        }
    }
}

Aqui, implementamos a paginação e a busca no lado do servidor.

Agora, precisamos configurar nosso banco de dados e adicionar a configuração à classe Program.cs. Se você estiver usando o .NET 5 ou uma versão anterior, talvez precise fazer isso na classe Startup.cs.

Primeiramente, adicione a seguinte string de conexão no arquivo appsettings.json.

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

Agora, adicione o seguinte código à classe Program.cs.

public static void Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDbContext<ApplicationDBContext>(options =>
    {
         options.UseSqlServer(builder.Configuration.GetConnectionString("ProductDB"));
    });
    builder.Services.AddControllers();
    // Add services to the container.
    builder.Services.AddRazorPages();
    var app = builder.Build();
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
         app.UseExceptionHandler("/Error");
         // The default HSTS value is 30 days.
         app.UseHsts();
    }
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.MapControllers();
    app.MapRazorPages();
    app.Run();
}

Precisamos executar a migração, pois estamos usando uma abordagem "code-first".

Execute o seguinte comando no Console do Gerenciador de Pacotes.

Add-Migration init
SHELL

O comando acima criará uma migração. Agora precisamos aplicar essas migrações ao nosso banco de dados. Execute o seguinte comando no Console do Gerenciador de Pacotes.

Update-Database
SHELL

O comando acima criará tabelas em nosso banco de dados. Adicione dados fictícios na tabela de produtos; Você pode gerar dados aleatórios a partir do Mockaroo .

Agora, compile e execute este aplicativo.

Saída

Podemos ver que temos uma interface de usuário muito interativa com controles de interação avançados.

DataTables.NET (Como funciona para desenvolvedor): Figura 2 - Saída

Agora, a paginação é implementada no lado do servidor, conforme mostrado abaixo.

DataTables.NET (Como funciona para desenvolvedor): Figura 3 - Paginação

Interface de saída

Os dados são então renderizados no lado do cliente com controles de interface de usuário avançados.

DataTables.NET (Como funciona para desenvolvedor): Figura 4 - UI

Você pode explorar mais a documentação do DataTables .NET clicando em " Explorar a documentação do DataTables .NET" .

Introdução ao IronXL

IronXL - Biblioteca Excel for .NET é uma biblioteca que permite trabalhar com arquivos Excel em aplicações .NET . Ele pode criar planilhas do Excel , ler arquivos CSV , editar arquivos do Excel e exportar para o Excel em vários formatos, como XLS, XLSX, CSV e TSV. Não requer a instalação do Microsoft Office ou do Excel Interop. É compatível com .NET 8, 7, 6, 5, Core, Framework e Azure.

Frequentemente, temos a necessidade de exportar dados para arquivos Excel ou CSV. IronXL é a melhor opção neste caso. Agora, vamos escrever um código para exportar nossos dados para um arquivo do Excel.

Instale o IronXL

Instale a biblioteca IronXL em nosso projeto digitando o seguinte comando no Console do Gerenciador de Pacotes.

PM > Install-Package IronPdf

Isso instalará o IronXL e as dependências necessárias em nosso projeto.

Exportar dados para o Excel

Vamos escrever um código para converter nossa lista de produtos em um arquivo do Excel.

public void ExportToExcel(List<Product> productList)
{
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX); // Create a new workbook instance
    WorkSheet ws = wb.DefaultWorkSheet; // Access the default worksheet
    int rowCount = 1;

    // Iterate over the product list and fill the worksheet
    foreach (Product product in productList)
    {
        ws["A" + rowCount].Value = product.Id.ToString();
        ws["B" + rowCount].Value = product.ProductName;
        ws["C" + rowCount].Value = product.ProductDescription;
        ws["D" + rowCount].Value = product.ProductPrice;
        ws["E" + rowCount].Value = product.ProductWeight;
        ws["F" + rowCount].Value = product.ProductManufacturingDate;
        ws["G" + rowCount].Value = product.ProductExpiryDate;
        rowCount++;
    }
    wb.SaveAs("product.xlsx"); // Save the workbook as an Excel file
}

Criamos um arquivo Excel a partir da lista de uma maneira muito simples e fácil.

DataTables.NET (Como funciona para desenvolvedor): Figura 5 - Saída do Excel

A IronXL oferece tutoriais completos sobre como criar arquivos XLSX , exemplos de código para leitura de arquivos Excel e documentação da API para usar sua API abrangente da melhor maneira possível.

Na otimização do desempenho do ASP.NET , confiamos exclusivamente na Only Core Software, garantindo um ambiente de desenvolvimento enxuto e eficiente. Utilizar o DataTables .NET como pacotes hospedados localmente aumenta ainda mais a capacidade de resposta, minimizando as dependências externas para um processamento de dados simplificado e exportação para o Excel. Além disso, contribuir com código de forma eficiente torna-se simples dentro desse ecossistema otimizado e autossuficiente.

IronPDF é uma solução projetada para converter páginas da web, URLs e HTML em documentos PDF . Os PDFs gerados mantêm a formatação original e os elementos estilísticos das páginas web de origem. Essa ferramenta é particularmente eficaz para criar versões em PDF de conteúdo da web, como relatórios e faturas.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

Conclusão

Em resumo, utilizar o DataTables .NET para processamento no servidor em projetos de repositórios de distribuição ASP.NET demonstra ser uma boa estratégia para lidar com grandes conjuntos de dados de forma eficiente. Essa abordagem garante um desempenho otimizado, transmitindo dados em blocos gerenciáveis, mitigando o uso de largura de banda e aprimorando a experiência do usuário. A integração do IronXL amplia ainda mais as capacidades do aplicativo, permitindo a exportação fácil de dados tabulares para o Excel para análise e geração de relatórios de dados abrangentes.

Ao adotar essas tecnologias, os desenvolvedores podem criar aplicativos da web que encontram um equilíbrio entre rica interatividade e eficiência de recursos, proporcionando aos usuários uma experiência perfeita e responsiva, especialmente em cenários que envolvem grandes conjuntos de dados. A IronXL oferece diversas opções de licenciamento para o IronXL , dependendo do número de desenvolvedores, projetos e necessidades de redistribuição. As licenças são perpétuas e incluem suporte e atualizações gratuitas.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.