ASP.NET GridView利用PagerTemplate自定义分页

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013519551/article/details/78466053

实现的效果:








一、将PagerTemplate属性标签放到GridView控件中,具体代码如下:

 

                                <PagerTemplate>
                                <asp:Label runat="server" ID="currentpage" Text="第"></asp:Label>
                                <asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>
                                <asp:Label runat="server" ID="Lblye" Text="页"></asp:Label>
                                <span style="font-weight:bold">/</span>
                                <asp:Label runat="server" ID="lbl_gong" Text="共"></asp:Label>
                                <asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>
                                <asp:Label runat="server" ID="Label2" Text="页"></asp:Label>
                              <%--  <asp:Label ID="Scount1" runat="server" Text="共"></asp:Label>
                                <asp:Label ID="lbl_RecordScount" runat="server"></asp:Label>
                                <asp:Label ID="Scount2" runat="server" Text="条记录"></asp:Label> --%>
                                <asp:Label runat="server" ID="TotalItemsLabel"  Text="<%# Container.TotalRowCount%>" />条记录
                                <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"
                                    Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton><%--Enabled属性可以改成Visible--%>
                                <span style="font-weight:bold">|</span>
                                <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"
                                    CommandName="Page" Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
                                <span style="font-weight:bold">|</span>
                                <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"
                                    Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
                                <span style="font-weight:bold">|</span>
                                <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"
                                    Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">尾页</asp:LinkButton>
                                跳转到第
                                <asp:TextBox ID="txtNewPageIndex" runat="server" Width="20px" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' />页
                                <%--这里将CommandArgument即使点击该按钮e.newIndex 值为3--%>
                                <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-2"
                                    CommandName="Page" Text="跳转" />
                                <asp:RangeValidator ID="Range_Validator" runat="server" ErrorMessage="页码超出范围!" MaximumValue="100" MinimumValue="1"
             ControlToValidate="txtNewPageIndex" ForeColor="Red" Type="Integer"></asp:RangeValidator>
                            </PagerTemplate>
二、编写后端代码:

  protected void EmployeeDirectory_OnPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            // EmployeeGrid.PageIndex = e.NewPageIndex;
            // InitialGridView_EmployeeDirectory();
            // 得到该控件
            GridView theGrid = sender as GridView;
            int newPageIndex = 0;
            if (e.NewPageIndex == -3)
            {
                //点击跳转按钮
                TextBox txtNewPageIndex = null;

                //GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
                GridViewRow pagerRow = theGrid.BottomPagerRow;

                if (pagerRow != null)
                {
                    //得到text控件
                    txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;
                }
                if (txtNewPageIndex != null)
                {
                    //得到索引
                    newPageIndex = int.Parse(txtNewPageIndex.Text) - 1;
                }
            }
            else
            {
                //点击了其他的按钮
                newPageIndex = e.NewPageIndex;
            }
            //防止新索引溢出
            newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
            newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;
            //得到新的值
            theGrid.PageIndex = newPageIndex;
            //重新绑定
            BindDataGridView_EmployeeDirectory();

        }

三、从数据库中读取数据

  protected void BindDataGridView_EmployeeDirectory()
        {
            string TxtEmployeeName = Txt_EmployeeName.Text.Trim();
            string DDL_Frame2 = DropDownList_Frame2.SelectedValue;
            string ddlBranch = ddl_Frame.SelectedValue;

                string sql = @"SELECT * FROM BI_Employee where (EmployeeID like '%" + TxtEmployeeName + "%' or ChineseName like '%"
                       + TxtEmployeeName + "%' or EnglishName like '%" + TxtEmployeeName + "%' or MobilePhone like '%"
                    + TxtEmployeeName + "%') and ( Frame2 like  '%" + DDL_Frame2 + "%')   and (Frame1 like '%"
                    + ddlBranch + "%') and  status='是' order by FrameGroup";
                DataSet ViewEmployeeDirectory = getDataSet(CONN_STRING, CommandType.Text, sql, null);
                EmployeeGrid.AllowPaging = true;
                EmployeeGrid.PageSize = 30;
                EmployeeGrid.DataSource = ViewEmployeeDirectory;
                EmployeeGrid.DataBind();
        }


当页面位于首页时,可以将Enabled属性为Visible.可以隐藏首页和上一页或者尾页和下一页,例如:

<asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"
                                    Enabled="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">首页</asp:LinkButton><%--Enabled属性可以改成Visible--%>

效果如下:



             
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页