Sunday, March 15, 2009

GridView Sorting And Paging



<%@ 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();
}
}

0 comments:

Your Ad Here