当前位置:文档之家› GRIDVIEW两种分页代码

GRIDVIEW两种分页代码

第一种分页A.aspx文件<%@ Page Language="C#" CodeFile="真分页.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>自定义代码实现真分页</title></head><body><form id="form1" runat="server"><div><asp:GridView ID="GridView1" runat="server"></asp:GridView><br />共有记录<asp:Label ID="lblrecordamount" runat="server" BackColor="White" ForeColor="Red"></asp:Label>条&nbsp; 每页显示<asp:LabelID="lblpagesize" runat="server" BackColor="White" ForeColor="Red"></asp:Label>条<br />共有<asp:Label ID="lblpagecount" runat="server" BackColor="White"ForeColor="Red"></asp:Label>页&nbsp; 当前是第<asp:LabelID="lblcurpageindex" runat="server" BackColor="White" ForeColor="Red"></asp:Label>页<br /><br /><asp:LinkButton ID="lbFirst" runat="server" CommandName="first" OnCommand="lbLast_Command">首页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbPrev" runat="server" CommandName="prev" OnCommand="lbLast_Command">上一页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbNext" runat="server" CommandName="next" OnCommand="lbLast_Command">下一页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbLast" runat="server" CommandName="last" OnCommand="lbLast_Command">尾页</asp:LinkButton>&nbsp; 直接跳转到<asp:DropDownListID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>页</div></form></body></html>A.aspx.cs文件using System;using System.Data;using System.Configuration;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 _Default : System.Web.UI.Page{private int recordamount = 0; //表中的记录总数private int pagesieze = 5; //每页显示多少条记录private int pagecount = 0; //共需要分多少页private int curpageindex = 0; //当前是第几页protected void Page_Load(object sender, EventArgs e){//第一次请求该页时初始化recordamount、pagesieze、pagecount这3个值,这3个值在以后的显示中都不会改变if (!this.IsPostBack){SqlDataSource ds = new SqlDataSource();ds.ConnectionString= ConfigurationManager.ConnectionStrings["gvdb"].ConnectionString;ds.SelectCommand = "select count(*) from stuinfo";DataView dv = (DataView)ds.Select(DataSourceSelectArguments.Empty);int count = int.Parse(dv[0][0].ToString());//初始化表中的记录总数recordamount = count;//初始化总页数if (recordamount % pagesieze == 0){pagecount = recordamount / pagesieze;}else{pagecount = recordamount / pagesieze + 1;}//第一次浏览该页面时显示第一页,所以当前页就是第一页curpageindex = 1;//用Label记下这4个变量的值,这样这4个变量的值就可以在服务器和浏览器端来回传递而不需要每次显示时都计算一遍this.lblrecordamount.Text = recordamount.ToString();this.lblpagesize.Text = pagesieze.ToString();this.lblpagecount.Text = pagecount.ToString();this.lblcurpageindex.Text = curpageindex.ToString();//初始化DropDownList1for (int i = 1; i <= pagecount; i++){this.ddl.Items.Add(i.ToString());}//由于4个参数的值已经确定,那么要显示的记录是从几到几就都确定了,这时候直接显示就可以了ShowInfo();}//与应用程序不同的地方是此处一定要把当前页面的索引值和分页总数的值存储起来,因为//网页跳转过程中跳转入口的不确定性,后面随时要用到,所以必须单独存储。

//curpageindex、pagecount这2个值在“首页、上一页、下一页、尾页”这4个按钮的事件中需要使用,所以应该在每次加载时都为这2个参数赋值curpageindex = int.Parse(this.lblcurpageindex.Text);pagecount = int.Parse(this.lblpagecount.Text);}//根据4个变量来显示数据的方法public void ShowInfo(){SqlDataSource ds = new SqlDataSource();ds.ConnectionString = ConfigurationManager.ConnectionStrings["gvdb"].ConnectionString;ds.SelectCommand = "proc_stuinfopage";ds.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;//为存储过程的2个参数赋值int start = pagesieze * (curpageindex - 1) + 1;int end = pagesieze * curpageindex;ds.SelectParameters.Add("startindex", start.ToString());ds.SelectParameters.Add("endindex", end.ToString());DataView dv = (DataView)ds.Select(DataSourceSelectArguments.Empty);this.GridView1.DataSource = dv;this.GridView1.AutoGenerateColumns = true;this.GridView1.DataBind();//改变当前是第几页这个Label的标签this.lblcurpageindex.Text = curpageindex.ToString();//实现ddl同步this.ddl.SelectedValue = curpageindex.ToString();//设置按钮的可用性if (curpageindex == 1){this.lbFirst.Enabled = false;this.lbPrev.Enabled = false;}else{this.lbPrev.Enabled = true;this.lbFirst.Enabled = true;}if (curpageindex == pagecount){this.lbLast.Enabled = false;this.lbNext.Enabled = false;}else{this.lbNext.Enabled = true;this.lbLast.Enabled = true;}}//“首页、上一页、下一页、尾页”这4个按钮的事件处理程序,共用一个事件处理程序protected void lbLast_Command(object sender, CommandEventArgs e){if (mandName == "first") //首页就是将当前页设为1{curpageindex = 1;}else if (mandName == "next") //下一页就是当前页+1{curpageindex++;}else if (mandName == "prev") //上一页就是当前页-1{curpageindex--;}else if (mandName == "last") //尾页就是当前页=总页数,也就是最后一页{curpageindex = pagecount;}//显示数据ShowInfo();}protected void ddl_SelectedIndexChanged(object sender, EventArgs e){string a = this.ddl.SelectedValue;curpageindex = int.Parse(a);ShowInfo();}}代码简析:看效果图就可以看出这种分页是在GridView外部分页,且其绑定对象是SqlDataSource因此它的分页代码是在GridView外写代码,相对叫简单,但确定是效果图看上去不是那么美观。

相关主题