GridView控件自定义分页的实现

简介: 前人栽树,后人乘凉,话不多说,代码如下:     实现方式一: .aspx: [c-sharp] view plain copy <form id="form1" runat="server">       <table style="width: 605px">         .

前人栽树,后人乘凉,话不多说,代码如下:

 


 

实现方式一:

.aspx:

[c-sharp]  view plain  copy
  1. <form id="form1" runat="server">  
  2.     <table style="width: 605px">  
  3.       <tr>  
  4.         <td style="width: 921px">  
  5.             <asp:GridView ID="GridView1" runat="server" Width="700px" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" Height="232px">  
  6.                 <PagerSettings Visible="False" />  
  7.             </asp:GridView>  
  8.         </td>  
  9.       </tr>  
  10.       <tr>  
  11.         <td style="width: 921px; height: 23px" >共   
  12.         <asp:Label ID="recordCount" runat="server"></asp:Label> 条/    
  13.         <asp:Label  ID="LabelCurrentPage" runat="server"></asp:Label>     
  14.         <asp:Label ID="LabelPageCount" runat="server"></asp:Label>页   
  15.            
  16.         <asp:LinkButton ID="First" runat="server" CommandArgument="First" CommandName="Page" OnClick="PagerButton_Click">首页</asp:LinkButton>   
  17.         <asp:LinkButton ID="Prev" runat="server" CommandArgument="Prev" CommandName="Page" OnClick="PagerButton_Click">上一页</asp:LinkButton>   
  18.         <asp:LinkButton ID="Next" runat="server" CommandArgument="Next" CommandName="Page" OnClick="PagerButton_Click">下一页</asp:LinkButton>   
  19.         <asp:LinkButton ID="Last" runat="server" CommandArgument="Last" CommandName="Page" OnClick="PagerButton_Click">尾页</asp:LinkButton>   
  20.         <asp:Label ID="Label1" runat="server">第</asp:Label>  
  21.         <asp:TextBox ID="txtPage" runat="server" Width="18px"></asp:TextBox>  
  22.         <asp:Label ID="Label2" runat="server">页</asp:Label>  
  23.         <asp:Button ID="btnLoginPage" runat="server" Text="GO" OnClick="btnLoginPage_Click" />  
  24.         </td>  
  25.       </tr>  
  26.       </table>  
  27.      </form>  

 

 


 

.CS:(以下代码可能折叠,请自行点击下面的按钮展开)

 

 

[c-sharp]  view plain  copy
  1. using System;  
  2. using System.Data;  
  3. using System.Data.SqlClient;  
  4. using System.Configuration;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.UI.HtmlControls;  
  11.   
  12. public partial class _Default : System.Web.UI.Page   
  13. {  
  14.     protected void Page_Load(object sender, EventArgs e)  
  15.     {  
  16.         if (!this.IsPostBack)  
  17.         {  
  18.             //绑定数据  
  19.             Bind();  
  20.         }  
  21.         //计算生成分页页码  
  22.         this.First.CommandName = "1";  
  23.         this.Prev.CommandName = this.GridView1.PageIndex == 0 ? "1" : this.GridView1.PageIndex.ToString();  
  24.         if (this.GridView1.PageCount == 1)  
  25.         {  
  26.             this.Next.CommandName = this.GridView1.PageCount.ToString();  
  27.         }  
  28.         else  
  29.         {  
  30.             int temp = this.GridView1.PageIndex + 2;  
  31.             this.Next.CommandName = temp.ToString();  
  32.         }  
  33.         this.Last.CommandName = this.GridView1.PageCount.ToString();  
  34.                
  35.     }  
  36.   
  37.     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)  
  38.     {  
  39.         GridView1.PageIndex = e.NewPageIndex;  
  40.         this.Bind();  
  41.     }  
  42.     //点击LinkButton按钮事件  
  43.     protected void PagerButton_Click(object sender, EventArgs e)  
  44.     {  
  45.         this.GridView1.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandName) - 1;  
  46.         this.Bind();  
  47.     }  
  48.   
  49.     protected void Bind()  
  50.     {  
  51.         //数据绑定代码  
  52.         string strconn = "Data Source=.; Initial Catalog=JWInfo; uid=sa;pwd=123456;";  
  53.         SqlConnection conn = new SqlConnection(strconn);  
  54.         conn.Open();  
  55.         SqlCommand cmd = new SqlCommand("select * from 学生信息", conn);  
  56.         SqlDataAdapter sda = new SqlDataAdapter();  
  57.         sda.SelectCommand = cmd;  
  58.         DataSet ds = new DataSet();  
  59.         sda.Fill(ds, "学生信息");  
  60.         GridView1.DataSource = ds.Tables["学生信息"];  
  61.         GridView1.DataBind();  
  62.   
  63.         //总页数,当前页,总记录数  
  64.         this.recordCount.Text = ds.Tables[0].Rows.Count.ToString();   
  65.         int t = this.GridView1.PageIndex+1;   
  66.         this.LabelCurrentPage.Text = t.ToString();   
  67.         this.LabelPageCount.Text = this.GridView1.PageCount.ToString();  
  68.   
  69.         //设置相关按钮是否可见  
  70.         this.First.Enabled = Convert.ToBoolean(GridView1.PageIndex != 0);  
  71.         this.Prev.Enabled = Convert.ToBoolean(GridView1.PageIndex != 0);  
  72.         this.Next.Enabled = Convert.ToBoolean(this.GridView1.PageIndex != this.GridView1.PageCount - 1);  
  73.         this.Last.Enabled = Convert.ToBoolean(this.GridView1.PageIndex != this.GridView1.PageCount - 1);  
  74.     }  
  75.   
  76.     //页码跳转实现  
  77.     protected void btnLoginPage_Click(object sender, EventArgs e)  
  78.     {  
  79.         int page = Convert.ToInt32(txtPage.Text.Trim());  
  80.         if (page < 0 || page > GridView1.PageCount)  
  81.         {  
  82.             Response.Write("<mce:script language='javascript'><!--  
  83. alert('输入的页码有错请重新输入');  
  84. // --></mce:script>");  
  85.         }  
  86.         else  
  87.         {  
  88.             GridView1.PageIndex = page - 1;  
  89.             this.Bind();  
  90.         }  
  91.           
  92.     }  
  93. }  

 

 

实现方式二:

这里通过使用GridView自带的分页模板实现,代码如下:

[c-sharp]  view plain  copy
  1. <form id="form1" runat="server">  
  2.     <div>  
  3.        <asp:GridView ID="GridView1" runat="server" Width="740px" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging">  
  4.               <PagerTemplate>  
  5.                   <asp:Label ID="Label1" runat="server" Text="第"></asp:Label>  
  6.                  <asp:Label  ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>  
  7.                  <asp:Label ID="Label2" runat="server" Text="页"></asp:Label>  
  8.                  <asp:Label ID="Label3" runat="server" Text="共"></asp:Label>  
  9.                  <asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>  
  10.                  <asp:Label ID="Label4" runat="server" Text="页"></asp:Label>  
  11.                  <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton>   
  12.                  <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>   
  13.                  <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>   
  14.                  <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">尾页</asp:LinkButton>  
  15.               </PagerTemplate>  
  16.           </asp:GridView>  
  17.     </div>  
  18.     </form>  

 

 

这其中,我曾看到有人,用类似的方法实现,但我在以下的代码中实现了一点小变动,将其中的Visable属性,改用Enable属性,本人认为更为合理,并且有利布局:

 


 

[c-sharp]  view plain  copy
  1. <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton>   
  2.                  <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>   
  3.                  <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>   
  4.                  <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">尾页</asp:LinkButton>  

 


 

.CS:

[c-sharp]  view plain  copy
  1. using System;  
  2. using System.Data;  
  3. using System.Data.SqlClient;  
  4. using System.Configuration;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.UI.HtmlControls;  
  11.   
  12. public partial class _Default : System.Web.UI.Page   
  13. {  
  14.     protected void Page_Load(object sender, EventArgs e)  
  15.     {  
  16.         if (!this.IsPostBack)  
  17.         {  
  18.             Bind();  
  19.         }  
  20.     }  
  21.   
  22.     protected void Bind()  
  23.     {  
  24.         string strconn = "Data Source=.; Initial Catalog=JWInfo; uid=sa;pwd=123456;";  
  25.         SqlConnection conn = new SqlConnection(strconn);  
  26.         conn.Open();  
  27.         SqlCommand cmd = new SqlCommand("select * from 学生信息", conn);  
  28.         SqlDataAdapter sda = new SqlDataAdapter();  
  29.         sda.SelectCommand = cmd;  
  30.         DataSet ds = new DataSet();  
  31.         sda.Fill(ds, "学生信息");  
  32.         GridView1.DataSource = ds.Tables["学生信息"];  
  33.         GridView1.DataBind();  
  34.   
  35.     }  
  36.     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)  
  37.     {  
  38.         this.GridView1.PageIndex = e.NewPageIndex;  
  39.         this.Bind();  
  40.     }  
  41.   
  42. }  

 

以上是对别人实现的一些总结,和对其中一些代码实现的改进,希望各位指教!

 


原文发布时间为:2009-10-05


本文作者:vinoYang


本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

目录
相关文章
|
8月前
使用ListView控件展示数据
使用ListView控件展示数据
|
算法
分页控件和几个相关控件的源代码
分页控件的源代码,可能会让有些人失望,因为代码很乱。乱的一个原因呢,可能是没有采用OO的思路吧,因为写控件的时候还一点都不会OO呢,只是一直在用,也就没有作大的重构。有两个分页控件, 一个是通过PostBack来分页的,一个是通过URL来分页的。
797 0
|
存储 SQL
表单控件的副产品——查询控件
查询控件 温故而知新能自己“跑”的表单控件,思路,雏形,源码。vs2005版本 表单控件续(1)——应用接口来简化和分散代码     当初在写表单控件的时候,突然想到,这个表单控件稍微修改一下不就是一个查询控件了吗?     那么查询控件需要做的什么事情呢?          1、自己描绘控件,比如能够自己添加文本框、下拉列表框这一类的控件。
658 0
|
Web App开发 JavaScript 索引