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--%>

效果如下:



             

GridView PagerTemplate分页问题?

10-31

如题:代码如下:各位大虾帮忙看一下:rnrn rn rn rn rn rn rn rn 首页 rn 上一页 rn 下一页 rn 尾页 rn rncs:rn protected void GridView_Select_Materials_List_PageIndexChanging(object sender, GridViewPageEventArgs e)rn rn this.GridView_Select_Materials_List.PageIndex = e.NewPageIndex;rn this.Bind();rn rn /// rn /// 只有一行数据时,显示分页rn /// rn /// rn /// rn protected void GridView_Select_Materials_List_DataBound(object sender, EventArgs e)rn rn if (GridView_Select_Materials_List.Rows.Count != 0)rn rn Control table = GridView_Select_Materials_List.Controls[0];rn int count = table.Controls.Count;rn table.Controls[count - 1].Visible = true;rn rn rn //---------------------------------------------------------------------------------------rn //rn //数据绑定rn //rn //---------------------------------------------------------------------------------------rn private void Bind()rn rn //new LinksBll对象rn MaterialsBll materilasBll = new MaterialsBll();rn //获取总记录数rn pcount = materilasBll.GetCount(GetSearchWhereSql());rn this.pageSize = webSet.WebSize;//读取配置文件的分页数量rn this.GridView_Select_Materials_List.PageSize = pageSize;rn if (!int.TryParse(Request.Params["page"] as string, out this.page))rn rn this.page = 0;rn rn //数据存放dt中rn DataTable dt = materilasBll.GetMaterialsList(pageSize,page);rn if (dt != null)rn rn if (dt.Rows.Count == 0)rn rn DataRow dr = dt.NewRow(); rn dt.Rows.Add(dr);rn this.GridView_Select_Materials_List.DataSource = dt.DefaultView;rn this.GridView_Select_Materials_List.DataBind();rn //空数据时显示表头rn //取得总列数rn int countColumn = GridView_Select_Materials_List.Columns.Count;rn GridView_Select_Materials_List.Rows[0].Cells.Clear();rn GridView_Select_Materials_List.Rows[0].Cells.Add(new TableCell());rn GridView_Select_Materials_List.Rows[0].Cells[0].ColumnSpan = countColumn;rn GridView_Select_Materials_List.Rows[0].Cells[0].Text = "没有数据";rn GridView_Select_Materials_List.Rows[0].Cells[0].Style.Add("text-align", "center");rn GridView_Select_Materials_List.Rows[0].Cells[0].Style.Add("width", "100%");rn rn elsern rn //绑定数据源rn this.GridView_Select_Materials_List.DataSource = dt;rn this.GridView_Select_Materials_List.DataBind();rn rn rn

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试