GridView控件自定义分页的实现

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

 



 

实现方式一:

.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

时间: 2024-10-27 23:31:11

GridView控件自定义分页的实现的相关文章

ASP.NET技巧:GridView控件自定义分页详解

asp.net|分页|技巧|控件|详解   前些天我写了关于 <<在存储过程中实现分页>>和<<GridView控件事件详解 >> ,后来又有一些人问我怎样在GridView中应用这个东东!其实很简单,主要是怎么保存当前页面的页码PageIndex问题,不过把这个解决了什么都好办了.因为在分页过程中:PageSize是一定的,我们可以用一个属性来表示.保存PageIndex好多中方法,而且数据不是很庞大,基本不会好太多的资源.还是一句老话,话再多都没有例子直

Android GridView控件自定义

虽然Android已自带了GridView,但是,却不够灵活,同时也不能自由添加控件,因此,本人通过需要进一步封装,来实现Android自定义GridView控件,达到自己需要的效果. 我们看一下最终所需要的效果图: 说明: 上图:这里先省去分页,只讲:Android GridView 控件实现自定义. 按照上面的图例需求,大致上可以把Android GridView 画成如下的方式: 思路如下: 默认将我们的组合控件设置为Orientation 是VERTICAL. 首先一行五个,那么一行以一

net-使用gridview控件自定义列之后怎么删除默认的?

问题描述 使用gridview控件自定义列之后怎么删除默认的? 怎么把图中右边的那几个默认的列给删了,在线等,多谢多谢 解决方案 自定义GridView控件GridVieW控件自定义删除按钮-解决多级相关中删除问题Gridview全解之自定义删除控件

GridView控件的分页显示问题

问题描述 使用DropDownList选择其中任意一项,将查询结果返回到GridView中显示,GridView启用了分页效果,问题是,当点击GridView中任意一个分页链接时,显示的是全部结果,之前筛选出来的结果被冲掉了.我想实现的效果是当安闲DropDownList选择其中某项时,筛选出来的结果显示在GridView中,即使翻页也不会影响当前结果.如何实现?以下是我写的源码:显示页面--<body><formid="form1"runat="serve

ASP.NET 数据列表控件的分页总结(一)自定义方法分页和PageDataSource类分页

在Asp.net中,提供了三个功能强大的列表控件:GridView.DataList和Repeater控件,但其中只有GridView控件提供分页功能.虽然DataGrid提供了分页功能,不过看上去功能有限,但是我们可以通过GridView的一些属性来获取状态以及增加首页.尾页功能按钮.如果在速度效率不是很讲究的情况下,由DataGrid自己管理分页还是不错的,付出的代价就是要把整个相关数据取出来后再删选指定页的数据.好处就是开发速度快,不需要写分页的存储过程.所以若需要追求执行效率,而且数据量

小弟请教个自定义gridView控件遇到的问题?

问题描述 我现在打算自己写个GridView控件,但是排序的问题让我有点不好实现,我在调用的时候怎么将当前的排序字段传给控件呢也就是说排序功能怎么可以实现自定义,使得这个控件更通用?各位有什么好的建议...我用的是vs2005 解决方案 解决方案二:在表头加上单击事件然后在后台:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web

在ASP.NET 2.0中操作数据:在GridView控件中使用TemplateField

asp.net|控件|数据 导言     让我们花点时间在浏览器中来看看我们的成果.这时,你将看到一个表格, 表格中每一个记录都是一个雇员的信息,一共有四列:一个是雇员的姓, 一个是名字,一个是头衔,还有一个是他们的受雇日期.     就像你看到的那样,TemplateField由两个模板组成--一个ItemTemplate,它有一个Label控件,其Text属性被设置为FirstName数据字段的值:还有一个EditItemTemplate,它有一个TextBix控件,其Text属性也被设置为

C#与SQL连接:GridView控件对数据库的操作_C#教程

GridView和DataGrid的异同 GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡.GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行. GridView相对于DataGrid来说,具有如下优势,功能上更加丰富,因为提供了智能标记面板(

灵活掌握asp.net中gridview控件的多种使用方法(上)_实用技巧

灵活使用asp.net中gridview控件的方法有很多种,本文内容很富,希望大家都能有所收获. 1.GridView无代码分页排序: 效果图: 小提示: 1.AllowSorting设为True,aspx代码中是AllowSorting="True": 2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12". 3.默认的是单向排序的,右击GridView弹出"属性",选择AllowSort