GridView分页的实现以及自定义分页样式功能实例

  GridView分页的实现

  

复制代码 代码如下:

  要在GridView中加入

  //实现分页

  AllowPaging="true"

  //一页数据10行

  PageSize="10"

  // 分页时触发的事件

  OnPageIndexChanging="gvwDesignationName_PageIndexChanging"

  在服务器事件里

  

复制代码 代码如下:

  protectedvoid gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e)

  {

  gvwDesignationName.PageIndex=e.newIndex;

  bingDesignatioonName();

  }

  这里我给出一个通用显示分页的模板(网上搜的,自己给出注释)

  

复制代码 代码如下:

  <PagerTemplate>

  当前第:

  //((GridView)Container.NamingContainer)就是为了得到当前的控件

  <asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>

  页/共:

  //得到分页页面的总数

  <asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>

  页

  //如果该分页是首分页,那么该连接就不会显示了.同时对应了自带识别的命令参数CommandArgument

  <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"

  Visible='<%#((GridView)Container.NamingContainer).PageIndex != 0 %>'>首页</asp:LinkButton>

  <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"

  CommandName="Page" Visible='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'>上一页</asp:LinkButton>

  //如果该分页是尾页,那么该连接就不会显示了

  <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"

  Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>下一页</asp:LinkButton>

  <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"

  Visible='<%# ((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="GO" />

  </PagerTemplate>

  对应该事件中代码为

  

复制代码 代码如下:

  protected void gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e)

  {

  // 得到该控件

  GridView theGrid = sender as GridView;

  int newPageIndex = 0;

  if (e.NewPageIndex==-3)

  {

  //点击了Go按钮

  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;

  //重新绑定

  bingDesignatioonName();

  }