Tuesday, September 2, 2008

How To Add Aplphabetical paging in Gridview




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

<!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>
           <asp:GridView ID="GridView1" ShowFooter="True" runat="Server" OnRowCommand="GridView1_RowCommand"
               OnRowCreated="GridView1_RowCreated" OnPageIndexChanging="GridView1_PageIndexChanging">
           </asp:GridView>
       </div>
   </form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class AlphabeticalPaging : System.Web.UI.Page
{
    DataTable data;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bindGrid("");
        }
    }
    DataTable GetData()
    {
        data = Session["data"] as DataTable;
        if (data != null)
        {
            return data;
        }
        data = new DataTable();
        DataColumn primaryColumn
        = new DataColumn("carid", typeof(Int32));
        data.Columns.Add(primaryColumn);
        data.Columns.Add(new DataColumn("year", typeof(Int32)));
        data.Columns.Add(new DataColumn("make", typeof(string)));
        data.Columns.Add(new DataColumn("model", typeof(string)));
        DataRow dr;
        dr = data.NewRow();
        dr[0] = 1;
        dr[1] = 1998;
        dr[2] = "Isuzu";
        dr[3] = "Trooper";
        data.Rows.Add(dr);
        dr = data.NewRow();
        dr[0] = 2;
        dr[1] = 2000;
        dr[2] = "Honda";
        dr[3] = "Civic";
        data.Rows.Add(dr);
        dr = data.NewRow();
        dr[0] = 3;
        dr[1] = 2000;
        dr[2] = "BMW";
        dr[3] = "GM";
        data.Rows.Add(dr);
        dr = data.NewRow();
        dr[0] = 4;
        dr[1] = 2000;
        dr[2] = "Swift";
        dr[3] = "Tata";
        data.Rows.Add(dr);
        DataColumn[] primaryColumns = new DataColumn[1];
        primaryColumns[0] = primaryColumn;
        data.PrimaryKey = primaryColumns;
        Session["data"] = data;
        return data;
    }
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {   //Use This Code in your RowCreated Event. 
        //A LinkButton with  text="All " can be added to 
        //Gridview footer to bring back all the records.
        if (e.Row.RowType == DataControlRowType.Footer)
        {

            TableCell cell = e.Row.Cells[0];
            cell.ColumnSpan = 2;
            cell.Controls.Clear();
            LinkButton lb = new LinkButton();
            lb.Text = "All ";
            lb.CommandArgument = "All ";
            lb.CommandName = "AlphaPaging";
            cell.Controls.Add(lb);
            for (int i = 65; i <= (65 + 25); i++)
            {
                lb = new LinkButton();

                lb.Text = Char.ConvertFromUtf32(i) + " ";
                lb.CommandArgument = Char.ConvertFromUtf32(i);
                lb.CommandName = "AlphaPaging";
                cell.Controls.Add(lb);

            }
        }
    }
    void bindGrid(string alphabet)
    {
        DataView dv;

        if (alphabet == "All ")
        {
            dv = new DataView(GetData());
        }
        else
        {
            dv = new DataView(GetData());
            dv.RowFilter = String.Format("model LIKE '%{0}%'", alphabet);
        }

        GridView1.DataSource = dv;
        GridView1.DataBind();
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName.Equals("AlphaPaging"))
        {
            ViewState["Alphabet"] = e.CommandArgument.ToString();
            bindGrid(e.CommandArgument.ToString());
        }
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        bindGrid(ViewState["Alphabet"].ToString());
    }
}

No comments:

Post a Comment