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博客。

目录
相关文章
|
数据库 C# 数据库管理
C#:Winfrom 实现DataGridView 自定义分页
今天给大家分享Winform实现DataGridView 自定义分页的案例,感兴趣的朋友可以一起来学习一下。 采用技术:C\#+Winform+Dapper+SQLite。
C#:Winfrom 实现DataGridView 自定义分页
|
数据库
分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
目的: 1、一个页面(DataList.aspx)可以显示多个模块的列表功能。      一般是有一个列表需求就需要一个aspx文件,如果有100个列表,那么就会有100个aspx文件,这么多的文件(包括.aspx.cs文件)里面的内容基本是一样的,这样写起来麻烦,管理起来也不容易,命名就是一个比较头痛的问题。
1075 0
|
算法
分页控件和几个相关控件的源代码
分页控件的源代码,可能会让有些人失望,因为代码很乱。乱的一个原因呢,可能是没有采用OO的思路吧,因为写控件的时候还一点都不会OO呢,只是一直在用,也就没有作大的重构。有两个分页控件, 一个是通过PostBack来分页的,一个是通过URL来分页的。
791 0
|
C#
WPF 实现 DataGrid/ListView 分页控件
原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来。如果数据量很大,2000条数据,一次性显示在一个页面中,不仅消耗资源,而且用户体验也很糟糕。
1953 0
|
Web App开发 JavaScript 索引