ASP.NET Web Form Tutorialprovides basic and advanced concepts of C# for beginners and professionals.

Binding data from a SQL database in an ASP.NET Web Forms application with performance paging

Back to: ASP.NET Web Form Tutorial

Binding data from a SQL database in an ASP.NET Web Forms application with performance paging involves optimizing the display of large datasets by fetching and displaying only the required subset of data (e.g., a specific page) instead of the entire dataset. Here's how to implement it:


Steps to Bind Data with Performance Paging

1. Database Preparation

Use a SQL query with paging features like OFFSET and FETCH NEXT for SQL Server.

Example:

sql

DECLARE @PageNumber INT = 1, @PageSize INT = 10;
WITH CTE AS ( SELECT ROW_NUMBER() OVER (ORDER BY YourSortColumn) AS RowNum, * FROM YourTable )
SELECT * FROM CTE WHERE RowNum BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize;

This ensures only the required rows are fetched for the current page.


2. ASP.NET Web Forms Setup

a) Add a GridView

Add a GridView to your .aspx file to display the paginated data.

html
< asp:GridView ID="GridView1" runat="server" AllowPaging="true" OnPageIndexChanging="GridView1_PageIndexChanging"> < /asp:GridView>

b) Backend Code for Data Binding

In the CodeBehind file:

c#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public partial class YourPage : System.Web.UI.Page
{
private string connectionString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ BindGrid(1);
// Bind the first page
}
}
private void BindGrid(int pageNumber)
{
int pageSize = 10;
// Define page size
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("YourStoredProcedure", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@PageNumber", pageNumber);
cmd.Parameters.AddWithValue("@PageSize", pageSize);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt); GridView1.DataSource = dt; GridView1.DataBind();
}
}
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
int newPageNumber = e.NewPageIndex + 1;
// Convert to 1-based index BindGrid(newPageNumber);
}
}

3. SQL Stored Procedure (Optional)

For better reusability, use a stored procedure:

sql
CREATE PROCEDURE GetPagedData
@PageNumber INT,
@PageSize INT
AS
BEGIN
SET NOCOUNT ON;
WITH CTE AS ( SELECT ROW_NUMBER() OVER (ORDER BY YourSortColumn) AS RowNum, * FROM YourTable )
SELECT * FROM CTE WHERE RowNum BETWEEN (@PageNumber - 1) * @PageSize + 1 AND @PageNumber * @PageSize;
END;

4. Enable Paging

Ensure the GridView supports paging:

  • Set AllowPaging="true" in the GridView definition.
  • Handle the PageIndexChanging event.

Performance Considerations

  • Indexing: Ensure proper indexing on the columns used in ORDER BY for fast row retrieval.
  • Asynchronous Loading: Use async and await for the database query to avoid blocking UI threads.
  • Caching: Cache results where feasible, especially for data that does not change frequently.

With these steps, you can efficiently bind and display paginated data from a SQL database in an ASP.NET Web Forms application.

Scroll to Top