C# Asp.net C中DataGrid中的下一页分页不工作

C# Asp.net C中DataGrid中的下一页分页不工作,c#,asp.net,datagrid,paging,page-index-changed,C#,Asp.net,Datagrid,Paging,Page Index Changed,我正在尝试对数据进行分页。基本上,我是拿一个数据,想在多页上显示它。但它不起作用。 我正在使用Asp.net和C进行编码。我使用mysql作为数据库 代码如下: ASP代码 <asp:DataGrid runat="server" ID="RestData" AllowPaging="True" PageSize="2" OnPageIndexChanged="RestData_PageIndexChanged" AllowCustomPaging="True"

我正在尝试对数据进行分页。基本上,我是拿一个数据,想在多页上显示它。但它不起作用。 我正在使用Asp.net和C进行编码。我使用mysql作为数据库

代码如下: ASP代码

<asp:DataGrid runat="server" ID="RestData"
     AllowPaging="True" PageSize="2" 
     OnPageIndexChanged="RestData_PageIndexChanged" AllowCustomPaging="True" 
     PagerStyle-Wrap="False">
     <PagerStyle />
</asp:DataGrid>
输出: 它显示了我给定的两行pagesize 2。但我看不到下一页。 当我使用repeater时,查询应该返回超过2行,但我不能在其中进行分页

请提供一些解决方案我无法用任何其他解决方案解决我的问题 在这个论坛上,我创建了一个新的

提前谢谢。

试试这个

protected void G_BgtPersonnel_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    //Next page in the GridView
    G_BgtPersonnel.PageIndex = e.NewPageIndex;
    BindgrdPersonnal();
}
尝试添加

If(! IsPostBack)
{
   BindData();
}
这里有一个类似的例子

下面的部分更适合Gridview而不是DataGrid

您应该订阅PageIndexChanging而不是PageIndexChanged事件

当您单击其中一个分页按钮时,在网格处理分页操作之前,会发生PageIndexChange

而PageIndexChanged是post操作


另外,我会在页面加载中检查绑定数据,您还需要通过执行以下操作告知网格总共有多少项:

public void BindData() {
    RestData.VirtualItemCount = CountTotalItemsInDb();
    // ... the rest ....
}

谢谢你的帮助。我找到了解决办法。只是发布解决方案 如果将来有人需要的话。最后我通过GridView得到了解决方案。它确实进行分页

ASP代码

<asp:GridView ID="RestGridData" runat="server"
     AllowPaging="True"  AutoGenerateColumns="False"
     PageSize="2" onpageindexchanging="RestGridData_PageIndexChanging">
  </asp:GridView> 

当您尝试更改页面时,DataGrid必须知道该做什么

在您的网格示例中,我的项目在VB中,很抱歉:

 <asp:DataGrid ID="MainGrid"
    OnEditCommand="MainGrid_Edit"
    OnCancelCommand="MainGrid_Cancel"
    OnUpdateCommand="MainGrid_Update"
    runat="server"
    AutoGenerateColumns="False"
    AllowSorting="True"
    CssClass="DistPortalDataGrid"
    AllowPaging="True"
    CellPadding="3"
    PageSize="25" 
    onpageindexchanging="MainGrid_PageIndexChanged"
    ....

如所示,DataGrid没有.PageIndex属性。这是正确的。DataGrid的等效属性是.CurrentPageIndex。为什么微软让他们与众不同,我不知道。虽然您在几年前就解决了这个问题,但我希望您或其他人会觉得这很有用。

在数据网格上分页不起作用的原因是您创建了“受保护”的方法,而它无法访问该方法。 如果代码改为下面的代码,它就可以工作了。希望它能帮助有需要的人

public void RestData_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
       RestData.CurrentPageIndex = e.NewPageIndex;
        BindData();
   }

您是否尝试使用PageIndexChange事件,您需要在其中设置索引并绑定网格。但是在DataGrid中,我找不到类似PageIndexChange的事件。不,您所做的只是正确的。它必须是PageIndexchange而不是PageIndexchange。你真的在做任何自定义分页。。。表示自定义数据显示在页面中?如果没有,则从设计中删除AllowCustomPaging=True。我也有同样的问题,在这里找到了解决方案,如果您采用此代码,您可以使其正常工作。您确定DataGrid存在event PageIndexChanging吗?请参考这里的DataGrid类,如果找到它,请告诉我@Rahul你能再读一遍吗?我也提到过同样的情况,并展示了一个罢工通过的地区。是的,仇杀有datagrid的PageIndexChanged事件,而有GridView的PageIndexChanged事件和PageIndexChanged事件datagrid中没有PageIndexchanging。请参阅MSDN。
 <asp:DataGrid ID="MainGrid"
    OnEditCommand="MainGrid_Edit"
    OnCancelCommand="MainGrid_Cancel"
    OnUpdateCommand="MainGrid_Update"
    runat="server"
    AutoGenerateColumns="False"
    AllowSorting="True"
    CssClass="DistPortalDataGrid"
    AllowPaging="True"
    CellPadding="3"
    PageSize="25" 
    onpageindexchanging="MainGrid_PageIndexChanged"
    ....
Protected Sub MainGrid_PageIndexChanged(source As Object, e As DataGridPageChangedEventArgs) Handles MainGrid.PageIndexChanged
    MainGrid.CurrentPageIndex = e.NewPageIndex
    BindMainGrid() 'rebinds the grid
End Sub
public void RestData_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
       RestData.CurrentPageIndex = e.NewPageIndex;
        BindData();
   }