Я пытаюсь реализовать DataGrid в ASP.NET и хочу создать пользовательский пейджинг, чтобы мне не приходилось предоставлять все данные за один раз. Я провел несколько часов, исследуя Интернет, но не нашел ничего полезного.
При просмотре страницы я вижу первый набор результатов в сетке с отключенной предыдущей ссылкой. Однако когда я нажимаю «Далее», я снова вижу первую страницу сетки с отключенной предыдущей ссылкой. При отладке кода я убедился, что обработчик событий 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; }
}
Любые мысли по этому поводу будут высоко оценены.