指定 DataGrid Web 服务器控件中的分页行为请参见
向 Web 窗体页添加 DataGrid Web 服务器控件 | DataGrid Web 服务器控件 | 介绍 DataGrid Web 服务器控件 
DataGrid 支持三种类型的分页: 带有默认导航按钮的默认分页 
带有自定义导航控件的默认分页 
自定义分页 
有关这些选项的讨论,请参阅 DataGrid Web 服务器控件中的分页行为。使用带有默认导航控件的默认分页
若要启用默认分页,请使用“属性生成器”设置属性以启用分页,设置页大小,并指定分页控件的样式。分页控件是 LinkButton 控件。可以从以下这些类型中选择: 下一页和上一页按钮。按钮标题可以为所需的任何文本。 
页码,它允许用户跳转到特定页。可以指定显示多少页,如果有多页,在页码旁边显示一个省略号(...)。 
还必须创建一个当用户单击导航控件时进行响应的事件处理程序。使用“属性生成器”指定分页 在“设计”视图中,选择 DataGrid 控件,然后单击“属性”窗口底部的“属性生成器”链接。 
在“DataGrid 属性”对话框中,单击“分页”选项卡。 
选中“允许分页”框。启用默认分页属性的整个集合。 
将“页面大小”属性设置为要在每一页上显示的项数。 
在“模式”列表中,选择显示“下一页”、“上一页”按钮或带有“页码”的按钮。 
若要在导航按钮上显示“下一页”和“上一页”,请设置“下一页按钮文本”和“上一页按钮文本”属性。对于下一页按钮,按钮上的默认文本为“&gt;”,而对于上一页按钮,则为“&lt;”。在运行时,显示符号“<”和“>”。 
— 或 — 将“数值按钮”属性设置为要显示的页数。例如,如果将“数值按钮”设置为 2(即每次显示两页),随后用户可从“...”、3、4 中选择,选择“...”时将显示第 3 页。 
如果要使用页码,请将 PagerStyle 对象的 PageButtonCount 属性设置为要显示的按钮数。 
在上述过程“使用‘属性生成器’指定分页”中的每个设置都与 DataGrid 的一个属性对应。这些属性可以在 Page_Load 事件中设置。 编程指定分页 使用 Page_Load 事件启用分页并设置模式和按钮属性。下面的示例显示可以如何设置一个名为 DataGrid1 的 DataGrid 控件,以使用简单分页并响应导航请求。此代码将页导航样式设置为在第一次显示该页时一次显示五页。当用户单击一个导航控件时,此代码仅重新绑定到数据源。 
' Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
   'Put user code to initialize the page here   With DataGrid1
      ' Enable paging.
      .AllowPaging = True
      ' Display 5 page numbers at a time.
      .PagerStyle.Mode = PagerMode.NumericPages
      .PagerStyle.PageButtonCount = 5
      .PageSize = 5
   End With   If Not Page.IsPostBack Then
      DataGrid1.DataBind()
   End If
End Sub// C#
private void Page_Load(object sender, System.EventArgs e)
{
   // Put user code to initialize the page here
   DataGrid1.AllowPaging = true;
   DataGrid1.PagerStyle.Mode = PagerMode.NumericPages;
   DataGrid1.PagerStyle.PageButtonCount = 5;
   DataGrid1.PageSize = 5;   if (!Page.IsPostBack) 
   {
      DataGrid1.DataBind();
   }
}
为网格的 PageIndexChanged 事件创建一个响应分页请求的事件处理程序。使用 e.NewPageIndex 更新 DataGrid 的 CurrentPageIndex,然后重新绑定数据。 
' Visual Basic
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) _
Handles DataGrid1.PageIndexChanged
   DataGrid1.CurrentPageIndex = e.NewPageIndex
   DataGrid1.DataBind()
End Sub// C#
private void DataGrid1_PageIndexChanged(object source, 
System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
   DataGrid1.CurrentPageIndex = e.NewPageIndex;
   DataGrid1.DataBind();
}
使用带有自定义导航控件的默认分页
在“属性生成器”的“页导航”选项卡上的选项之一是“显示导航按钮”。如果未选中该选项,则不显示导航控件。在这种情况下,可以提供自己的导航按钮并操作 DataGrid 的 CurrentPageIndex 属性。DataGrid 仍负责将数据源拆分到相应的页中并显示选定的页。提供自定义导航控件 向 Web 窗体页添加用户可用来导航的服务器控件。例如,可能希望创建上面带有前进和后退图像的 ImageButton 控件。 
在导航控件的事件处理程序中,将 DataGrid 控件的 CurrentPageIndex 属性设置为要转到的页,然后将网格重新绑定到数据源。 
下面的代码显示可以如何为 VCR 样式的导航面板创建代码,该面板包含允许用户转到第一页、最后一页、上一页或下一页的按钮。按钮将作为 Button 控件定义,其 CommandName 属性设置用于表示导航的方向。所有这四个按钮在单击时都将调用以下 NavigationButtonClicked 方法。 注意 在 Visual C# 中,可以使用集成开发环境 (IDE) 来挂钩事件并消除以下所示的 += 赋值。在这种情况下,在代码编辑器中创建 NavigationButtonClick 方法。返回设计器。依次选择各个按钮,选择“属性”窗口中的“事件”选项卡。从 Click 事件的下拉列表中选择 NavigationButtonClick 事件。
' Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
   'Put user code to initialize the page here
   If Not Page.IsPostBack Then
      DataGrid1.DataBind()
   End If
End SubPrivate Sub NavigationButtonClicked(ByVal sender As Object, _
ByVal e As EventArgs) Handles FirstPage.Click, PreviousPage.Click, NextPage.Click, LastPage.Click
   Dim direction As String = CType(sender, Button).CommandName   Select Case direction.ToUpper()
      Case "FIRST"
         DataGrid1.CurrentPageIndex = 0
      Case "PREVIOUS"
         DataGrid1.CurrentPageIndex = _
            Math.Max(0, DataGrid1.CurrentPageIndex - 1)
      Case "NEXT"
          DataGrid1.CurrentPageIndex = _
             Math.Min(DataGrid1.PageCount - 1, _
             DataGrid1.CurrentPageIndex + 1)
      Case "LAST"
         DataGrid1.CurrentPageIndex = _
             DataGrid1.PageCount - 1
      Case Else
   End Select   DataGrid1.DataBind()
End Sub// C#
private void Page_Load(object sender, System.EventArgs e)
{
   // Put user code to initialize the page here.   // Have all the buttons hook up to the same event.
   First.Click += new System.EventHandler(this.NavigationButtonClick);
   Previous.Click += 
      new System.EventHandler(this.NavigationButtonClick);
   Next.Click += new System.EventHandler(this.NavigationButtonClick);
   Last.Click += new System.EventHandler(this.NavigationButtonClick);
}private void NavigationButtonClick(object sender, System.EventArgs e)
{
   string direction = ((Button)sender).CommandName;   switch (direction.ToUpper())
   {
      case "FIRST" :
         DataGrid1.CurrentPageIndex = 0;
         break;
      case "PREVIOUS" :
         DataGrid1.CurrentPageIndex = 
            Math.Max(DataGrid1.CurrentPageIndex -1, 0);
         break;
      case "NEXT" :
         DataGrid1.CurrentPageIndex = 
            Math.Min(DataGrid1.CurrentPageIndex + 1, 
            DataGrid1.PageCount - 1);
         break;
      case "LAST" :
         DataGrid1.CurrentPageIndex = DataGrid1.PageCount - 1;
         break;
      default :
         break;
   }
   DataGrid1.DataBind();
}
创建自定义分页
通过使用 DataGrid 的 AllowCustomPaging 属性,可以完全控制要显示哪些记录。自定义分页通过减少在系统中来回移动的数据量来提高性能,因为可一次只从数据源检索一页数据。有关自定义分页的信息,请参阅 DataGrid.AllowCustomPaging 属性。 有关示例,请参阅演练:使用 Web 窗体页创建分页的数据访问。

解决方案 »

  1.   

    to:lemong(風之影) 
    有没有,自己做的呢?
      

  2.   

    自己写的程序?不方便,我现在在广东出差,近期回不去,在上一家公司时候做过,分页是个很常见的问题,你自己搜索一下,在这里也有类似的贴子,上面给出的只是帮助中得一部分,也可以自己用代码控制,帮助中还有几个类似的专题我现在主要用vc作了,不好意思,手头没有 .net 的程序
      

  3.   

    我用C#写过一个,Sql Server、B/S版的。
      

  4.   

    to:AustinLei(黄瓜杀手) 
    好呀!能发给我吗?