我正在尝试在 ASP.NET 中实现 DataGrid,并希望实现自定义分页,这样我就不必一次性提供所有数据。我花了几个小时在互联网上进行研究,但没有发现任何有用的东西。
当我查看页面时,我看到网格中的第一组结果,之前的链接被禁用。但是,当我单击下一步时,我再次看到网格的第一页禁用了上一个链接。在调试代码时,我确定从未调用 MyGrid_PageIndexChanged() 事件处理程序。
我在下面包含了我的简化代码。我更改了变量名称并省略了方法以专注于数据网格分页问题。
在 ASPX 文件中:
<asp:DataGrid ID="myGrid" runat="server" GridLines="None" UseAccessibleHeader="true" AutoGenerateColumns="false" AllowPaging="true" AllowCustomPaging="true" PageIndexChanged="MyGrid_PageIndexChanged">
<PagerStyle Mode="NextPrev" NextPageText="Next >" PrevPageText="< Previous" />
<Columns>
<asp:BoundColumn HeaderText="Title" DataField="Name" />
<asp:BoundColumn HeaderText="Date" DataField="Date" />
</Columns>
</asp:DataGrid>
在 CS 文件中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myGrid.PageSize = 20;
myGrid.VirtualItemCount = GetNumItems();
BindMyGrid();
}
}
protected void MyGrid_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)
{
myGrid.CurrentPageIndex = e.NewPageIndex;
BindMyGrid();
}
private int GetNumItems()
{
return 500;
}
private void BindMyGrid()
{
Data[] array = GetDataFromInternetSomehow();
this.myGrid.DataSource = array;
this.myGrid.DataBind();
}
private class Data
{
public string Date { get; set; }
public string Name { get; set; }
}
对此的任何想法将不胜感激。