Datatables .NET (Geliştiriciler İçin Nasıl Çalışır)
ASP.NET geliştiricileri, sıklıkla gelişmiş özelliklere sahip tablo verilerini veya HTML tablolarını sunmanın verimli yollarını arar (sıralama, arama ve sayfalama gibi). DataTables.NET, etkileşimli ve özellik açısından zengin tabloların web uygulamalarında oluşturulmasını kolaylaştıran güçlü bir jQuery ve JavaScript kütüphanesi ve son derece esnek bir araçtır. Bu makalede, ASP.NET projenize sunucu tarafı işleme için bir tablo geliştirme kütüphanesi olan DataTables.NET dağıtım dosyalarını nasıl entegre edeceğinizi ve tablo verilerinin sunumunu ve kullanıcı deneyimini nasıl geliştireceğinizi keşfedeceğiz.
Bir ASP.NET Web Uygulamasında DataTables Nasıl Kullanılır?
- ASP.NET Web Uygulaması Oluşturun
- DataTables İstemci Tarafı stil paketi ekleyin
- Sadece çekirdek yazılımı olan Entity Framework Core Paketlerini yükleyin
- Model Sınıfı, Denetleyici ve Razor Sayfası ekleyin
- JS dosyasına JavaScript kodu ekleyin
- Yapılandırmayı ayarlayın
- Programı derleyin ve çalıştırın
- Verileri IronXL for Excel Data Export kullanarak bir Excel dosyasına aktarın
DataTables.NET Nedir?
DataTables.NET, .NET uygulamalarında etkileşimli tablolar oluşturmanıza ve manipüle etmenize olanak tanıyan bir jQuery JavaScript kütüphanesidir. Dinamik ve statik HTML tabloları için sayfalama, sıralama, filtreleme ve kaydırma gibi kapsamlı API özellikleri sunan jQuery DataTables eklentisine dayanır. Bu, SQL veritabanları, AJAX veya bellek içi nesneler gibi çeşitli veri kaynaklarıyla çalışabilen bir tablo geliştirme kütüphanesidir.
Sunucu Taraf İşleme
Birden fazla ürünü kapsayan geniş bir veri kümesi sağlayan bir API uç noktasına sahip olduğunuzu düşünün. Standart yaklaşım, jQuery DataTables'in bu API'ye bir AJAX çağrısı yaparak JSON formatında bir ürün listesi elde etmesi ve bir HTML tablosu oluşturmasıdır. Bu, tipik olarak 100 ila 1000 kayıt arasında değişen daha küçük veri kümeleri için etkili olan istemci tarafı işleme olarak bilinir. Ancak, veri kümesi 10.000 kayıt veya daha fazlasına genişlediğinde ne olur?
Çok sayıda kayıtla uğraşırken, tüm veri kümesini bir anda tarayıcıya göndermek pratik olmaz. 10.000 kaydın bir seferde iletilmesi, bant genişliği açısından israf olmasının yanı sıra tarayıcı kaynaklarını da zorlamaktadır. Bu gibi durumlarda, performansı optimize etmek için alternatif bir yaklaşım olan sunucu tarafı işleme gerekli hale gelir.
Sunucu tarafı işleme, tüm veri kümesini göndermek yerine, API'nin genellikle sayfalara ayrılmış şekilde, yönetilebilir parçalar halinde veri iletmesidir, genellikle sayfa başına yaklaşık 50 kayıt ile. Bu şekilde, yükleme süresi önemli ölçüde iyileştirilir, çünkü jQuery DataTables artık bir kerede tüm veri kümesiyle uğraşmak yerine mütevazı bir kayıt sayısını (~50) yükler. Bu yaklaşım, kullanıcı arayüzü ve DataTable arasındaki etkileşimi daha verimli hale getirerek CPU ve bant genişliği kullanımını azaltır.
Bu makalede, geniş veri kümelerini verimli bir şekilde ele alıp görüntülerken ASP.NET Razor Sayfa uygulamasında sunucu tarafı işlemenin uygulanmasını inceleyeceğiz ve böylece web uygulamanızın genel performansını artıracağız.
ASP.NET 8'de DataTables.NET ile Başlarken
Başlamak için, projemize DataTables.NET İstemci Taraf Kütüphanesi eklememiz gerekiyor. Bu makale, .NET 8 ile ASP.NET Core Web Uygulaması (Razor Pages) projesini kullanacaktır. Gereksinimlerinize göre herhangi bir Web App Projesini kullanabilirsiniz.
Bir İstemci Taraf Kütüphanesi eklemek için, Çözüm üzerinde sağ tıklayıp Ekle> İstemci Taraf Kütüphanesi ekleyin ve aşağıda gösterildiği gibi veri tablolarını aratınız.

Şimdi, Model Sınıfı, DB Context, Kontrolör, HTML tablosu ve AJAX Çağrısı eklememiz gerekiyor.
Ancak bundan önce, uygulamamızı Veritabanı ile bağlamak için EntityFramework NuGet Paketlerini kurmamız gerekli. Bu makale, Kod Öncelikli Yaklaşımı kullanacaktır, tercihinize göre Veritabanı öncelikli olarak kullanabilirsiniz.
Aşağıdaki yerel olarak barındırılmış paketleri yükleyin:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
NuGet Paket Yöneticisi Konsolu'ndan install-package komutunu kullanarak veya NuGet Paket Yöneticisi çözümünden aratarak yükleyin.
Model Sınıfı Ekle
Bu örnek için Ürün Model Sınıfı kullanıyorum, gereksinimlerinize göre kullanabilirsiniz.
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; }
}
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; }
}
Public Class Product
Public Property Id() As Integer
Public Property ProductName() As String = String.Empty
Public Property ProductPrice() As String = String.Empty
Public Property ProductWeight() As String = String.Empty
Public Property ProductDescription() As String = String.Empty
Public Property ProductManufacturingDate() As DateTime
Public Property ProductExpiryDate() As DateTime
End Class
ApplicationDBContext Sınıfı Ekle
public class ApplicationDBContext : DbContext
{
public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
}
public class ApplicationDBContext : DbContext
{
public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
}
Public Class ApplicationDBContext
Inherits DbContext
Public Sub New(ByVal options As DbContextOptions(Of ApplicationDBContext))
MyBase.New(options)
End Sub
Public Property Products() As DbSet(Of Product)
End Class
Gelişmiş Etkileşim Kontrolleri Ekle
Gelişmiş kontroller, örneğin sayfalama, arama vb. eklemek için ProductDatatables.js'yi wwwroot/js klasörü içine ekleyeceğiz.
// 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>";
}
}
]
});
});
// 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>";
}
}
]
});
});
Şimdi, bir HTML tablosu eklememiz gerekiyor.
HTML Tablosu Ekle
Statik bir HTML sayfası eklemek için index.cshtml dosyasına aşağıdaki kodu yazın.
@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>
}
Denetleyiciyi eklememiz gerekiyor.
Ürün Denetleyicisi Ekle
Uç nokta ve dogrudan cekme istekleri oluşturmak icin Ürün Denetleyicisi ekleyin.
[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;
}
}
}
[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;
}
}
}
<Route("api/[controller]")>
<ApiController>
Public Class ProductController
Inherits ControllerBase
Private ReadOnly context As ApplicationDBContext
Public Sub New(ByVal context As ApplicationDBContext)
Me.context = context
End Sub
<HttpPost>
Public Function GetProducts() As IActionResult
Try
Dim draw = Request.Form("draw").FirstOrDefault()
Dim start = Request.Form("start").FirstOrDefault()
Dim length = Request.Form("length").FirstOrDefault()
Dim searchValue = Request.Form("search[value]").FirstOrDefault()
Dim pageSize As Integer = If(length IsNot Nothing, Convert.ToInt32(length), 0)
Dim skip As Integer = If(start IsNot Nothing, Convert.ToInt32(start), 0)
Dim recordsTotal As Integer = 0
Dim productData = context.Products.ToLis()
' Filtering data based on provided search value
If Not String.IsNullOrEmpty(searchValue) Then
productData = productData.Where(Function(m) m.ProductName.Contains(searchValue) OrElse m.ProductDescription.Contains(searchValue) OrElse m.Id.ToString().Contains(searchValue)).ToList()
End If
recordsTotal = productData.Count()
Dim data = productData.Skip(skip).Take(pageSize).ToList()
Dim jsonData = New With {
Key .draw = draw,
Key .recordsFiltered = recordsTotal,
Key .recordsTotal = recordsTotal,
Key .data = data
}
Return Ok(jsonData)
Catch e1 As Exception
Throw
End Try
End Function
End Class
Burada, sunucu tarafında sayfalama ve arama uyguladık.
Şimdi, veritabanımızı kurup Program.cs sınıfına konfigürasyon eklememiz gerekiyor. .NET 5 veya daha düşük bir sürüm kullanıyorsanız, bunu Startup.cs sınıfında yapmanız gerekebilir.
Önce, appsettings.json dosyasına aşağıdaki Bağlantı Dizgesini ekleyin.
"ConnectionStrings": {
"ProductDB": "Server=localserver\\SQLEXPRESS;Database=ProductDB;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;"
}
Şimdi Program.cs sınıfına aşağıdaki kodu ekleyin.
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();
}
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();
}
Public Shared Sub Main(ByVal args() As String)
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddDbContext(Of ApplicationDBContext)(Sub(options)
options.UseSqlServer(builder.Configuration.GetConnectionString("ProductDB"))
End Sub)
builder.Services.AddControllers()
' Add services to the container.
builder.Services.AddRazorPages()
Dim app = builder.Build()
' Configure the HTTP request pipeline.
If Not app.Environment.IsDevelopment() Then
app.UseExceptionHandler("/Error")
' The default HSTS value is 30 days.
app.UseHsts()
End If
app.UseHttpsRedirection()
app.UseStaticFiles()
app.UseRouting()
app.UseAuthorization()
app.MapControllers()
app.MapRazorPages()
app.Run()
End Sub
Kod-birinci yaklaşım kullandığımız için taşıma işlemini çalıştırmamız gerekiyor.
Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın.
Add-Migration init
Add-Migration init
Yukarıdaki komut bir taşıma oluşturacaktır. Şimdi bu taşımaları veritabanımıza uygulamamız gerekiyor. Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın.
Update-Database
Update-Database
Yukarıdaki komut veritabanımızda tablolar oluşturacaktır. Ürün Tablosuna sahte veri ekle; Rastgele verileri Mockaroo'dan oluşturabilirsiniz.
Şimdi, bu uygulamayı birleştirin ve çalıştırın.
Çıktı
Oldukça etkileşimli bir arayüz ve gelişmiş etkileşim kontrolleri ile karşılaştık.

Sunucu tarafında sayfalama aşağıda gösterildiği gibi uygulanmıştır.

Çıkış Arayüzü
Veriler, zengin kullanıcı arayüzü kontrolü ile İstemci Tarafında oluşturulur.

Daha fazlasını DataTables.NET belgelerini keşfederek öğrenebilirsiniz.
IronXL'e Giriş
IronXL - .NET için Excel Kütüphanesi, .NET uygulamalarında Excel dosyalarıyla çalışmanıza olanak tanıyan bir kütüphanedir. Excel elektronik tabloları oluşturabilir, CSV dosyalarını okuyabilir, Excel dosyalarını düzenleyebilir ve Excel'e aktarabilir. Microsoft Office veya Excel Interop kurulumu gerektirmez. .NET 8, 7, 6, 5, Core, Framework ve Azure'u destekler.
Verileri Excel veya CSV dosyalarına aktarma gereksinimimiz sık sık olur. IronXL bu durumda en iyi seçimdir. Şimdi, verilerimizi bir Excel dosyasına aktaran bir kod yazacağız.
IronXL'yi Yükleyin
Paket Yöneticisi Konsoluna aşağıdaki komutu girerek projemize IronXL kutuphanesini kurun.
Install-Package IronPdf
Bu, projemize IronXL ve gerekli bağımlılıkları yükleyecektir.
Verileri Excel'e Aktar
Ürün listemizi bir Excel dosyasına dönüştüren bir kod yazalım.
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
}
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
}
Public Sub ExportToExcel(ByVal productList As List(Of Product))
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Create a new workbook instance
Dim ws As WorkSheet = wb.DefaultWorkSheet ' Access the default worksheet
Dim rowCount As Integer = 1
' Iterate over the product list and fill the worksheet
For Each product As 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 += 1
Next product
wb.SaveAs("product.xlsx") ' Save the workbook as an Excel file
End Sub
Listeyi çok basit ve kolay bir şekilde bir Excel dosyasına dönüştürdük.

IronXL, XLSX dosyaları oluşturma ile ilgili eğitimler, Excel okuma ile ilgili kod örnekleri ve API belgeleri sunar.
ASP.NET performansını optimize ederken, yalın ve verimli bir geliştirme ortamını garantilemek için yalnızca Çekirdek Yazılıma güveniriz. Veri işleme ve Excel'e aktarma işlemlerini kolaylaştırarak dış bağımlılıkları minimize eder. Ek olarak, optimize edilmiş ve kendine yeten bu ekosistem içinde kod katkıları daha sorunsuz hale gelir.
IronPDF, web sayfalarını, URL'leri ve HTML'i PDF belgelerine dönüştürmek için tasarlanmış bir çözümdür. Oluşturulan PDF'ler, kaynak web sayfalarının orijinal biçimlendirmesini ve stil öğelerini korur. Bu araç, raporlar ve faturalar gibi web tabanlı içeriğin PDF versiyonlarını oluşturmak için özellikle etkilidir.
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");
}
}
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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Sonuç
Özetle, ASP.NET dağıtım repo projelerinde sunucu tarafı işleme için DataTables.NET'i kullanmak, büyük veri kümesi işlemlerini daha verimli bir şekilde yönetmek için iyi bir stratejidir. Bu yaklaşım, verileri yönetilebilir parçalara ayırarak performansın optimize edilmesini ve bant genişliği kullanımının azaltılmasını sağlar ve kullanıcı deneyimini geliştirir. IronXL entegrasyonu, tablo verilerini Excel'e kolay bir şekilde aktararak uygulamanın yeteneklerini genişletir ve kapsamlı veri analizi ve raporlama imkanı sunar.
Bu teknolojileri benimseyerek, geliştiriciler zengin interaktif ve kaynak verimli web uygulamaları oluşturabilirler, özellikle büyük veri kümelerinin yer aldığı senaryolarda. IronXL, geliştirici sayısı, proje ve yeniden dağıtım ihtiyacına bağlı olarak çeşitli lisans seçenekleri sunar. Lisanslar süresizdir ve ücretsiz destek ve güncellemeler içerir.
Sıkça Sorulan Sorular
DataTables.NET bir ASP.NET projesine nasıl entegre edilir?
DataTables.NET'i bir ASP.NET projesine entegre etmek için, bir ASP.NET Web Uygulaması oluşturun, DataTables Client-Side stillendirme paketlerini ekleyin, Entity Framework Core Paketlerini kurun, Model Sınıfları, Denetleyiciler ve Razor Sayfaları ekleyin, JavaScript'i sunucu-tarafı işlemeye göre yapılandırın ve ardından projenizi oluşturup çalıştırın.
DataTables.NET'te sunucu-tarafı işleme nedir?
DataTables.NET'te sunucu-tarafı işleme, tüm veri kümesini bir kerede yüklemek yerine, verileri yönetilebilir parçalar halinde sunucudan istemciye aktarmayı içerir. Bu, yükleme sürelerini azaltarak ve özellikle büyük veri kümeleriyle CPU ve bant genişliği kullanımını en aza indirerek performansı arttırır.
DataTables.NET'te sunucu-tarafı işleme neden önemlidir?
Sunucu-tarafı işleme, büyük veri kümeleriyle çalışırken performansı optimize etmek için hayati önem taşır. Bu, sunucunun sadece gerekli verileri istemciye göndermesine olanak tanıyarak tarayıcı üzerindeki yükü azaltır ve genel verimliliği artırır.
Bir ASP.NET uygulamasında tablo verilerini Excel'e nasıl aktarabilirim?
Bir ASP.NET uygulamasında tablo verilerini Excel'e aktarmak için IronXL kütüphanesini kullanabilirsiniz. IronXL, veri listelerinizden Microsoft Office veya Excel Interop'a gerek olmadan doğrudan Excel dosyaları oluşturmanıza ve düzenlemenize olanak tanır.
DataTables için ASP.NET'de bir İstemci Tarafı Kütüphanesi nasıl kurulmalı?
ASP.NET'de bir İstemci Tarafı Kütüphanesi kurmak için, Visual Studio'da Çözümünüzde sağ tıklayın, 'Ekle'yi seçin, ardından 'İstemci Tarafı Kütüphanesi'ni seçin. Projenizin işlevselliğini arttıracak bir kütüphane eklemek için arama yapabilirsiniz, örneğin DataTables.
DataTables.NET'i sunucu-tarafı işleme için yapılandırmanın aşamaları nedir?
DataTables.NET'i sunucu-tarafı işleme için yapılandırmak için, bir Model Sınıfı, DB Bağlamı, Denetleyici ve HTML tablosu kurduğunuzdan emin olun. Ayrıca AJAX çağrısı yapmalı ve veri alma ve manipülasyonunu yönetmek üzere JavaScript dosyalarınızda sunucu-tarafı işleme mantığını yapılandırmalısınız.
DataTables.NET ile filtreleme ve sayfalama nasıl çalışır?
DataTables.NET'te filtreleme ve sayfalama sunucu-tarafı işleme yolu ile yönetilir. Sunucu, arama kriterlerine göre verileri filtreler ve sayfalamayı verilerin parçalar halinde istemciye gönderilmesi ile yönetir, böylece veri işleme daha verimli olur.




