GridView自定义分页

效果图

前台代码:

<PagerTemplate >
           <br /> 
                  <asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1)  + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label>
                 <asp:LinkButton ID="lbnFirst" runat="Server" Text="首页" 
                 Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="First" ></asp:LinkButton>
               <asp:LinkButton ID="lbnPrev" runat="server" Text="上一页" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'
               CommandName="Page" CommandArgument="Prev"  ></asp:LinkButton>        <asp:LinkButton ID="lbnNext" runat="Server" Text="下一页"
                Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
                CommandName="Page" CommandArgument="Next" ></asp:LinkButton>         <asp:LinkButton ID="lbnLast" runat="Server" Text="尾页" 
                 Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
                 CommandName="Page" CommandArgument="Last" ></asp:LinkButton>         到第<asp:TextBox runat="server" ID="inPageNum"></asp:TextBox>
                 页 <asp:Button ID="Button1" CommandName="go" runat="server" Text="Go" />  
                 <br />
          </PagerTemplate>

<asp:Label ID="lblPage" runat="server" Text='<%# "第" + (((GridView)Container.NamingContainer).PageIndex + 1)  + "页/共" + (((GridView)Container.NamingContainer).PageCount) + "页" %> '></asp:Label>

这句代码是显示数据供有几页,当前在第几页。我们通过((GridView)Container.NamingContainer).PageIndex来获取当前页,通过((GridView)Container.NamingContainer).PageCount来获取总页数。


<asp:LinkButton ID="lbnFirst" runat="Server" Text="首页"  Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>' CommandName="Page" CommandArgument="First" ></asp:LinkButton>

这一句代码实现跳转到列表的第一页,后台代码通过响应GridView.RowCommand 事件,根据CommandName="Page"和CommandArgument="First"来定位到分页列表的第一页。GridView中的任何一个按钮被点击都会触发RowCommand 事件,我们可以通过该事件来自定义处理程序。更多的时候建议使用GridView内置的属性。下表是MSDN上对GridView内置属性的一个简单说明。

在这个自定义分页中,上一页,下一页,尾页和首页都使用了内置属性。

 到第<asp:TextBox runat="server" ID="inPageNum"></asp:TextBox>页 <asp:Button ID="Button1" CommandName="go" runat="server" />

这段代码是实现用户自己输入页码,然后点击Button跳转的的前台代码。为了使用RowCommand 事件,我们自定义了CommandName="go",当然你也可以在这里添加 CommandArgument以传递更多的信息。

后台代码:

#region
        private void GetGdlist()
        {
            
           //这里是连接数据库绑定GridView
            ……
            this.gdList.DataSource = ds;
            this.gdList.DataBind();
                    }
        #endregion
        #endregion
        #region Page Controls Events
        #region gdList_PageIndexChanging
        /// <summary>
        /// GridView分页按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gdList_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try {
                gdList.PageIndex = e.NewPageIndex;
                GetGdlist();
                TextBox tb = (TextBox)gdList.BottomPagerRow.FindControl("inPageNum");
                tb.Text = (gdList.PageIndex + 1).ToString();
            }
            catch { }
        }
        #endregion
 protected void gdList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "go")
            {
                try {
                    TextBox tb = (TextBox)gdList.BottomPagerRow.FindControl("inPageNum");
                    int num = Int32.Parse(tb.Text);
                    GridViewPageEventArgs ea = new GridViewPageEventArgs(num - 1);
                    gdList_PageIndexChanging(null, ea);
                }
                catch { }
            }
        }

这里主要有三个方法: 

BindGridView()方法,从数据库提取数据绑定到GridView控件。 

gdList_PageIndexChanging方法,在用户单击上一页,下一页,首页,尾页的时候,通过   gdList.PageIndex = e.NewPageIndex语句来设置GridView控件应该显示的分页数据,然后通过  TextBox tb = (TextBox)gdList.BottomPagerRow.FindControl("inPageNum"); tb.Text = (gdList.PageIndex + 1).ToString();语句在Textbox中显示当前页码。

gdList_RowCommand方法,在这里是响应用户自己输入页码点击Button按钮的事件。首先获取用户输入的页码数,然后调用 gdList_PageIndexChanging方法,使GridView更新数据。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值