Here I am going to show Alphabetic Paging using gridview control. Here user can find data according to respective alphabet link and also can find all the data by clicking all link.

Create a table Customers with column Cus_Code varchar(50), Cus_Name varchar(50), Cus_address varchar(MAX), Cus_sal int.

Program : Default.aspx.cs code

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
private string cnstr = ConfigurationManager.ConnectionStrings
["ConnectionString"].ConnectionString;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ViewState["SelectedText"] = "All";
CreateAlphaPagings();
BindGrid(this.ViewState["SelectedText"].ToString());
}
}
private void CreateAlphaPagings()
{
lbTitle.Text = "Alphabetic Paging Sample";
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");

if (this.ViewState["Paging"] == null)
{
for (int i = 65; i <= (65 + 25); i++)
{
DataRow dr = dt.NewRow();
dr[0] = Char.ConvertFromUtf32(i);
dr[1] = Char.ConvertFromUtf32(i);
dt.Rows.Add(dr);
}

DataRow drNew = dt.NewRow();
drNew["PageIndex"] = "All";
drNew["PageText"] = "All";
dt.Rows.Add(drNew);

this.ViewState["Paging"] = dt;
}
else
dt = (DataTable)this.ViewState["Paging"];

DataList1.DataSource = dt;
DataList1.DataBind();

}
private void BindGrid(string StartAlpha)
{
SqlConnection con = new SqlConnection(cnstr);
string sql = "";

if (StartAlpha == "All")
sql = "Select * from Customers Order By Cus_Code asc";
else
sql = "Select * from Customers Where Cus_Name Like '"
+ StartAlpha + "%' Order By Cus_Code asc ";

SqlDataAdapter da = new SqlDataAdapter(sql, cnstr);
DataTable dtSelect = new DataTable();
da.Fill(dtSelect);

GridView1.DataSource = dtSelect;
GridView1.DataBind();

}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
LinkButton lbkbtnPaging = (LinkButton)e.CommandSource;
BindGrid(e.CommandArgument.ToString());
this.ViewState["SelectedText"] = e.CommandArgument.ToString();
CreateAlphaPagings();
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
if (this.ViewState["SelectedText"] != null)
{
LinkButton lbkbtnPaging = (LinkButton)e.Item.FindControl("lnkbtnPaging");
if (this.ViewState["SelectedText"].ToString() == lbkbtnPaging.Text)
lbkbtnPaging.Enabled = false;
}
}
}
}

Default.aspx code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<
body>
<form id="form1" runat="server">
<div>
<h2><asp:Label ID="lbTitle" runat="server" Text=""></asp:Label>
<asp:DataList ID="DataList1" OnItemCommand="DataList1_ItemCommand"
OnItemDataBound="DataList1_ItemDataBound" RepeatDirection="Horizontal" runat="server">

<SeparatorTemplate>

</SeparatorTemplate>
<ItemTemplate>
<asp:LinkButton ID="lnkbtnPaging" runat="server" CommandArgument='<%# Bind("PageIndex") %>'
Text='<%# Bind("PageText") %>'></asp:LinkButton>
</ItemTemplate>
</asp:DataList>
</h2>
<br />

<asp:GridView ID="GridView1" runat="server" EmptyDataText="No Records Found">
</asp:GridView>

</div>
</form>
</body>
</
html>

Running the program its output show below

GridView Control