ฉันกำลังพยายามใช้ DataGrid ใน ASP.NET และต้องการสร้างเพจแบบกำหนดเอง เพื่อจะได้ไม่ต้องให้ข้อมูลทั้งหมดในครั้งเดียว ฉันใช้เวลาหลายชั่วโมงในการค้นคว้าข้อมูลทางอินเทอร์เน็ต แต่ก็ไม่พบสิ่งใดที่เป็นประโยชน์
เมื่อฉันดูเพจ ฉันเห็นผลลัพธ์ชุดแรกในตาราง โดยที่ลิงก์ก่อนหน้าปิดใช้งานอยู่ เมื่อฉันคลิกถัดไป ฉันเห็นหน้าแรกของตารางอีกครั้งโดยที่ลิงก์ก่อนหน้าปิดใช้งานอยู่ เมื่อทำการดีบั๊กโค้ด ฉันแน่ใจว่าไม่เคยมีการเรียกตัวจัดการเหตุการณ์ MyGrid_PageIndexChanged()
ฉันได้รวมโค้ดแบบง่ายของฉันไว้ด้านล่าง ฉันได้เปลี่ยนชื่อตัวแปรและละเว้นวิธีการเพื่อเน้นไปที่ปัญหาการเพจของ DataGrid
ในไฟล์ 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; }
}
ความคิดใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมมาก