Saya mencoba menerapkan DataGrid di ASP.NET, dan ingin mencapai paging khusus sehingga saya tidak perlu menyediakan semua data sekaligus. Saya telah menghabiskan beberapa jam untuk meneliti di internet, tetapi belum menemukan sesuatu yang berguna.
Saat saya melihat halaman tersebut, saya melihat kumpulan hasil pertama di kisi, dengan tautan sebelumnya dinonaktifkan. Namun ketika saya mengklik berikutnya, saya sekali lagi melihat halaman pertama grid dengan tautan sebelumnya dinonaktifkan. Saat men-debug kode, saya memastikan bahwa event handler MyGrid_PageIndexChanged() tidak pernah dipanggil.
Saya telah memasukkan kode sederhana saya di bawah ini. Saya telah mengubah nama variabel dan menghilangkan metode untuk fokus pada masalah paging datagrid.
Dalam file 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>
Dan di file 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; }
}
Setiap pemikiran tentang hal ini akan sangat dihargai.