แนวคิดการใช้งานจะเหมือนกับการส่งออก Excel และ Word ข้างต้น ซึ่งก็คือการเพิ่มแถวใน GridView ขั้นแรก ให้ประกาศการควบคุมต่อไปนี้เพื่อแสดงหมายเลขหน้า: หน้าไหน จำนวนหน้าทั้งหมด จำนวนบันทึก หน้าแรก , หน้าก่อนหน้า , หน้าถัดไป , หน้าสุดท้าย ควบคุมการเพจ
ป้ายกำกับ lblCurrentPage;
ป้ายกำกับ lblPageCount;
ป้ายกำกับ lblRowsCount;
LinkButton btnFirst;
LinkButton btnPrev;
LinkButton btnNext;
LinkButton btnLast; ในวิธี OnInit ของ GridView เริ่มต้นการควบคุมเหล่านี้
การป้องกันการแทนที่เป็นโมฆะ OnInit (EventArgs e)
-
this.EnableViewState = true;
lblCurrentPage = ป้ายกำกับใหม่ ();
lblCurrentPage.ForeColor = ColorTranslator.FromHtml("#e78a29");
lblCurrentPage.Text = "1";
lblPageCount = ป้ายกำกับใหม่ ();
lblPageCount.Text = "1";
lblRowsCount = ป้ายกำกับใหม่ ();
lblRowsCount.ForeColor = ColorTranslator.FromHtml("#e78a29");
btnFirst = new LinkButton();
btnFirst.Text = "หน้าแรก";
btnFirst.Command += CommandEventHandler ใหม่ (NavigateToPage);
btnFirst.CommandName = "เพจเจอร์";
btnFirst.CommandArgument = "First";
btnPrev = LinkButton ใหม่();
btnPrev.Text = "หน้าที่แล้ว";
btnPrev.Command += CommandEventHandler ใหม่ (NavigateToPage);
btnPrev.CommandName = "เพจเจอร์";
btnPrev.CommandArgument = "ก่อนหน้า";
btnNext = LinkButton ใหม่();
btnNext.Text = "หน้าถัดไป";
btnNext.Command += CommandEventHandler ใหม่ (NavigateToPage);
btnNext.CommandName = "เพจเจอร์";
btnNext.CommandArgument = "ถัดไป";
btnLast = LinkButton ใหม่ ();
btnLast.Text = "หน้าสุดท้าย";
btnLast.Command += CommandEventHandler ใหม่ (NavigateToPage);
btnLast.CommandName = "เพจเจอร์";
btnLast.CommandArgument = "สุดท้าย";
base.OnInit(e);
}
จากนั้นส่วนสำคัญของโค้ดคือวิธีเพิ่มการควบคุมเหล่านี้ใน GridView โดยการสร้างการควบคุมย่อยดังนี้:
เพิ่มการควบคุมการเพจในวิธีการสร้างการควบคุมลูก
ป้องกันแทนที่ int CreateChildControls (System.Collections.IEnumerable dataSource, bool dataBinding)
-
int res = base.CreateChildControls (แหล่งข้อมูล, dataBinding);
ถ้า(ShowToolBar)
-
พยายาม
-
แถว GridViewRow = ใหม่ GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
TableCell c = TableCell ใหม่ ();
c.ความกว้าง = หน่วย.เปอร์เซ็นต์(100);
c.ColumnSpan = this.Columns.Count;
แถว.เซลล์.เพิ่ม(c);
TableCell cell1 = TableCell ใหม่ ();
ตาราง ตาราง = ตารางใหม่ ();
TableRow r = TableRow ใหม่ ();
ตาราง.แถว.เพิ่ม(r);
table.Width = Unit.Percentage(100);
c.Controls.Add(ตาราง);
r.เซลล์เพิ่ม(cell1);
ตัวอักษร l1 = ตัวอักษรใหม่ ();
l1.Text = "หน้า:";
cell1.Controls.Add(l1);
cell1.Wrap = เท็จ;
cell1.Controls.Add(lblCurrentPage);
l1 = ตัวอักษรใหม่ ();
l1.Text = "หน้า/";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblPageCount);
l1 = ตัวอักษรใหม่ ();
l1.Text = "หน้า, ทั้งหมด";
cell1.Controls.Add(l1);
cell1.Controls.Add(lblRowsCount);
l1 = ตัวอักษรใหม่ ();
l1.Text = "บันทึก";
cell1.HorizontalAlign = VerticalAlign.Left;
cell1.Controls.Add(l1);
TableCell cell2 = TableCell ใหม่ ();
cell2.HorizontalAlign = VerticalAlign.Right;
cell2.Wrap = เท็จ;
l1 = ตัวอักษรใหม่ ();
l1.Text = "[";
cell2.Controls.เพิ่ม(l1);
cell2.Controls.Add(btnFirst);
l1 = ตัวอักษรใหม่ ();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = ตัวอักษรใหม่ ();
l1.Text = "[";
cell2.Controls.เพิ่ม(l1);
cell2.Controls.Add(btnPrev);
l1 = ตัวอักษรใหม่ ();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = ตัวอักษรใหม่ ();
l1.Text = "[";
cell2.Controls.เพิ่ม(l1);
cell2.Controls.Add(btnNext);
l1 = ตัวอักษรใหม่ ();
l1.Text = "] ";
cell2.Controls.Add(l1);
l1 = ตัวอักษรใหม่ ();
l1.Text = "[";
cell2.Controls.เพิ่ม(l1);
cell2.Controls.Add(btnLast);
l1 = ตัวอักษรใหม่ ();
l1.Text = "] ";
cell2.Controls.เพิ่ม(l1);
r.เซลล์เพิ่ม(cell2);
this.Controls[0].Controls.AddAt(0, แถว);
-
จับ
-
-
-
ส่งคืนความละเอียด;
}ต่อไปนี้เป็นเหตุการณ์ที่จัดการเพจ คล้ายกับ RowCommand
โมฆะสาธารณะ NavigateToPage (ผู้ส่งวัตถุ CommandEventArgs e)
-
btnFirst.Enabled = จริง;
btnPrev.Enabled = จริง;
btnNext.Enabled = จริง;
btnLast.Enabled = จริง;
สวิตช์ (e.CommandArgument.ToString())
-
กรณี "ก่อนหน้า":
ถ้า (this.PageIndex > 0)
-
this.PageIndex -= 1
;
หยุดพัก;
กรณี "ถัดไป":
ถ้า (this.PageIndex < (this.PageCount - 1))
-
this.PageIndex += 1
;
หยุดพัก;
กรณี "ครั้งแรก":
นี้.PageIndex = 0;
หยุดพัก;
กรณี "สุดท้าย":
this.PageIndex = this.PageCount - 1;
หยุดพัก;
-
ถ้า (this.PageIndex == 0)
-
btnFirst.Enabled = เท็จ;
btnPrev.Enabled = เท็จ;
ถ้า (this.PageCount == 1)
-
btnLast.Enabled = เท็จ;
btnNext.Enabled = เท็จ;
-
-
อย่างอื่นถ้า (this.PageIndex == this.PageCount - 1)
-
btnLast.Enabled = เท็จ;
btnNext.Enabled = เท็จ;
-
OnBind();
}ด้วยวิธีนี้ เพจส่วนตัวจึงสามารถรับรู้ได้อย่างง่ายดาย ยินดีต้อนรับเข้าร่วมกับเรา