gridview的完美分页功能

来源:互联网 发布:spring AOP源码实现 编辑:程序博客网 时间:2024/04/28 14:56

终于实现了这个gridview的完美分页功能:

这是前台需要的代码设置:

  <PagerTemplate>
             <br />
                <asp:Label ID="lblPage" runat="server" Text='<%# "page" + (((GridView)Container.NamingContainer).PageIndex + 1) +"/"+ ((GridView)Container.NamingContainer).PageCount %>'></asp:Label>
                <asp:LinkButton ID="lbtnFirst" runat="server" Text="first" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'
                    CommandName="Page" CommandArgument="First"></asp:LinkButton>
                <asp:LinkButton ID="lbtnPrev" runat="server" Text="pre" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'
                    CommandName="Page" CommandArgument="Prev"></asp:LinkButton>
                <asp:PlaceHolder ID="numeric" runat="server"></asp:PlaceHolder>
                <asp:LinkButton ID="lbtnNext" runat="server" Text="next" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
                    CommandName="Page" CommandArgument="Next"></asp:LinkButton>
                <asp:LinkButton ID="lbtnLast" runat="server" Text="last" Enabled='<%# ((GridView)Container.NamingContainer).PageIndex != (((GridView)Container.NamingContainer).PageCount - 1) %>'
                    CommandName="Page" CommandArgument="Last"></asp:LinkButton>
            </PagerTemplate>

后台的代码设置:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Page")
        {
            switch (e.CommandArgument.ToString())
            {
                case "First":
                    gvTest.PageIndex = 0;
                    break;
                case "Prev":
                    if (gvTest.PageIndex > 0)
                    {
                        gvTest.PageIndex -= 1;
                    }
                    break;
                case "Next":
                    if (gvTest.PageIndex < (gvTest.PageCount - 1))
                    {
                        gvTest.PageIndex += 1;
                    }
                    break;
                case "Last":
                    gvTest.PageIndex = gvTest.PageCount - 1;
                    break;
                default:
                    gvTest.PageIndex = Int32.Parse(e.CommandArgument.ToString()) - 1;
                    break;
            }
        }
        else
        {
            if (e.CommandName == "Go")
            {
                DropDownList ddlJumpPage = (DropDownList)gvTest.BottomPagerRow.FindControl("ddlJumpPage");
                int index = Int32.Parse(ddlJumpPage.SelectedValue);
                gvTest.PageIndex = index - 1;
                getData();
            }
        }
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Pager)
        {
            PlaceHolder ph = (PlaceHolder)e.Row.FindControl("numeric");
            int startIndex = (gvTest.PageIndex) / 3 * 3 + 1;//根据当前页得到第一个页码
            int endIndex = startIndex + 2;//显示10个页码
            if (endIndex > gvTest.PageCount)//判断是否为最后一页
            {
                endIndex = gvTest.PageCount;
            }
            for (int i = startIndex; i <= endIndex; i++)//通过循环动态显示页码
            {
                var lbtn = new LinkButton { CommandName = "Page", CommandArgument = i.ToString(), Text = ""+ i };
                ph.Controls.Add(i - 1 != gvTest.PageIndex ? (Control)lbtn : new LiteralControl(i.ToString()));
                ph.Controls.Add(new LiteralControl(" "));
            }
        }

    }

最终实现效果:

 

原创粉丝点击