GridView Sorting And Paging-ASP.NET

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

<!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" runat="server" AllowPaging="True" AllowSorting="True"
               AutoGenerateColumns="true"  OnDataBound="GridView1_DataBound"
               OnPageIndexChanging="GridView1_PageIndexChanging" OnSorting="GridView1_Sorting">
               <PagerTemplate>
                   <asp:Button ID="btnFirst" runat="server" Text="<< First" CommandArgument="First"
                       CommandName="Page" />
                   <asp:Button ID="btnPrev" runat="server" Text="< Previous" CommandArgument="Prev"
                       CommandName="Page" />
                   Page
                   <asp:DropDownList ID="ddlPages" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlPages_SelectedIndexChanged">
                   </asp:DropDownList>
                   of
                   <asp:Label ID="lblPageCount" runat="server"></asp:Label>
                   <asp:Button ID="btnNext" runat="server" Text="Next >" CommandArgument="Next" CommandName="Page" />
                   <asp:Button ID="btnLast" runat="server" Text="Last >>" CommandArgument="Last" CommandName="Page" />
               </PagerTemplate>
           </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 Default4 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        } 

    }

    private void BindGrid()
    {
       
        GridView1.DataSource = GetDataSet();
        GridView1.DataBind();
    }
    protected void GridView1_DataBound(Object sender, EventArgs e)
    {
        GridViewRow gvrPager = GridView1.BottomPagerRow;

        if (gvrPager == null) return;

        // get your controls from the gridview
        DropDownList ddlPages =
        (DropDownList)gvrPager.Cells[0].FindControl("ddlPages");
        Label lblPageCount =
        (Label)gvrPager.Cells[0].FindControl("lblPageCount");

        if (ddlPages != null)
        {
            // populate pager
            for (int i = 0; i < GridView1.PageCount; i++)
            {

                int intPageNumber = i + 1;
                ListItem lstItem =
                new ListItem(intPageNumber.ToString());

                if (i == GridView1.PageIndex)
                    lstItem.Selected = true;

                ddlPages.Items.Add(lstItem);
            }
        }

        int itemCount = 0;

        // populate page count
        if (lblPageCount != null)
        {

            //pull the datasource
            DataSet ds = GridView1.DataSource as DataSet;
            if (ds != null)
                itemCount = ds.Tables[0].Rows.Count;

            string pageCount = "<b>" + GridView1.PageCount.ToString() + "</b> (" + itemCount.ToString() + " Items)";
            lblPageCount.Text = pageCount;

        }

        Button btnPrev = (Button)gvrPager.Cells[0].FindControl("btnPrev");
        Button btnNext = (Button)gvrPager.Cells[0].FindControl("btnNext");
        Button btnFirst = (Button)gvrPager.Cells[0].FindControl("btnFirst");
        Button btnLast = (Button)gvrPager.Cells[0].FindControl("btnLast");

        //now figure out what page we're on
        if (GridView1.PageIndex == 0)
        {
            btnPrev.Enabled = false;
            btnFirst.Enabled = false;
        }
        else if (GridView1.PageIndex + 1 == GridView1.PageCount)
        {
            btnLast.Enabled = false;
            btnNext.Enabled = false;
        }
        else
        {
            btnLast.Enabled = true;
            btnNext.Enabled = true;
            btnPrev.Enabled = true;
            btnFirst.Enabled = true;
        }

    }
    protected void ddlPages_SelectedIndexChanged(Object sender, EventArgs e)
    {
        GridViewRow gvrPager = GridView1.BottomPagerRow;
        DropDownList ddlPages = (DropDownList)gvrPager.Cells[0].FindControl("ddlPages");

        GridView1.PageIndex = ddlPages.SelectedIndex;

        // a method to populate your grid
        BindGrid();
    }
    public DataSet GetDataSet()
    {

        DataTable dt = new DataTable("Company");
        DataRow dr;
        dt.Columns.Add(new DataColumn("accountNo", typeof(Int32)));
        dt.Columns.Add(new DataColumn("CompanyName", typeof(string)));
        dt.Columns.Add(new DataColumn("Address", typeof(Int32)));
        for (int i = 0; i <= 10; i++)
        {
            dr = dt.NewRow();
            dr[0] = i;
            dr[1] = "Company" + i + Environment.NewLine + "Title" + i;
            dr[2] = i;
            dt.Rows.Add(dr);
        }

        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        return ds;
    }
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataSet ds = GetDataSet();

        if (ds != null)
        {


            DataView dataView = new DataView(ds.Tables[0]);
            dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

            GridView1.DataSource = dataView;
            GridView1.DataBind();
        }

    }

    private DataSet GetMyDataSet()
    {
        throw new Exception("The method or operation is not implemented.");
    }

    string GetSortDirection(string sortBy)
    {

        string sortDir = " ASC";
        if (ViewState["sortBy"] != null)
        {
            string sortedBy = ViewState["sortBy"].ToString();

            if (sortedBy == sortBy)
            {
                //the direction should be desc
                sortDir = " DESC";

                //reset the sorter to null
                ViewState["sortBy"] = null;
            }
            else
            {
                //this is the first sort for this row
                //put it to the ViewState
                ViewState["sortBy"] = sortBy;

            }
        }
        else
        {
            //it's null, so this is the first sort
            ViewState["sortBy"] = sortBy;
        }
        return sortDir;

    }
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        //rebind using your bind routine
        BindGrid();
    }
}

إرسال تعليق

Please do not post any spam link in the comment box😊

أحدث أقدم

Blog ads

CodeGuru