قبل بضعة أيام، كتبت عن <<تنفيذ الترحيل في الإجراءات المخزنة>> و<<شرح تفصيلي لأحداث التحكم في GridView>>. لاحقًا، سألني بعض الأشخاص عن كيفية تطبيق هذه الأشياء في GridView، في الواقع، الأمر بسيط جدًا بشكل أساسي، هناك مشكلة في حفظ رقم الصفحة PageIndex للصفحة الحالية، ولكن كل شيء أسهل في الحل لأنه في عملية الترحيل: حجم الصفحة مؤكد، يمكننا استخدام سمة لتمثيلها احفظ PageIndex، ولن تكون البيانات كبيرة جدًا. في الأساس، لن يكون هناك الكثير من الموارد. كما يقول المثل القديم، بغض النظر عن عدد الكلمات التي يتم نطقها، لا توجد أمثلة بديهية
هنا لحفظ PageIndex، وهو رقم الصفحة الحالية، عند النقر على الصفحة السابقة، سيتم تقليل قيمتها أولاً، ومن المعروف أنها 0. شيء واحد يجب ملاحظته هو أن رقم الصفحة الأولى هنا هو 0 بدلاً من 1. دعونا نلقي نظرة على الكود، ثم سنقوم بتحليله!
1<asp:GridView ID = "NewsGrid" runat = "server" AutoGenerateColumns = "False"allowPaging = "false" Width = "100٪">
2 <الأعمدة>
3 <asp:BoundField DataField="NewsId" HeaderText="NewsID"/>
4 <asp:HyperLinkField DataNavigateUrlFields="NewsId" DataNavigateUrlFormatString="~/Details.aspx?ID={0}"
5 DataTextField = "العنوان" HeaderText = "عنوان الأخبار" ItemStyle-Width = "70٪"/>
6 <asp:BoundField DataField="PostTime" HeaderText="Post Time"/>
7 <asp:CommandField HeaderText="إدارة الأخبار" ShowCancelButton="False" ShowDeleteButton="True"
8 ShowEditButton="True"/>
9 </الأعمدة>
10 </asp:GridView>
11 <div style=" الارتفاع:16px; المساحة العلوية:5px; الهامش-اليمين:30px; float:right">
12 <asp:HiddenField ID="CurrentPage" runat="server" Value="0"/>
13 <asp:LinkButton ID="First" runat="server" CommandArgument="first" OnClick="PagerButton_Click">الصفحة الرئيسية</asp:LinkButton>
14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev" OnClick="PagerButton_Click">الصفحة السابقة</asp:LinkButton>
15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next" OnClick="PagerButton_Click">الصفحة التالية</asp:LinkButton>
16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last" OnClick="PagerButton_Click">الصفحة الأخيرة</asp:LinkButton>
17 </div> الكود في ملف CS:
1 PagerButton_Click (مرسل الكائن، EventArgs e) باطل محمي
2 {
3 int pageIndx = Convert.ToInt32(CurrentPage.Value);
4 إجماليات int = NewsManager.GetNews(0, pageSize).TotalRecords;
5 صفحات int = (الإجماليات٪ حجم الصفحة) == 0 (الإجماليات / حجم الصفحة) : (الإجماليات / حجم الصفحة + 1)؛
6 string arg = ((LinkButton)sender).CommandArgument.ToString().ToLower();
7 التبديل (أرج)
8 {
9 حالة "السابق":
10 إذا (pageIndx > 0)
11 {
12 صفحة إندكس -= 1;
13}
14 استراحة؛
15 حالة "التالي":
16 إذا (pageIndx < الصفحات - 1)
17 {
18 pageIndx += 1;
19}
20 استراحة؛
21 حالة "الأخيرة":
22pageIndx = pages - 1;
23 استراحة؛
24 الافتراضي:
25 صفحة إندكس = 0;
26 استراحة؛
27}
28 CurrentPage.Value = pageIndx.ToString();
29 NewsGrid.DataSource = NewsManager.GetNews(pageIndx, pageSize).Entities;
30 NewsGrid.DataBind();
31}
أليس الأمر بسيطًا جدًا؟ سوف تفهمه بعد قراءة الكود. لن أخوض في التفاصيل هنا حول استخدام الأزرار لتمرير المعلمات. هناك أيضًا سمة الكيانات في فئة كيان التطبيق EntitySet التي تنفذ وظائف عامة مماثلة > هنا يمكن العثور عليها في المقالات
http://www.cnblogs.com/xdotnet/archive/2006/09/29/gridview_paging_myself.html