Il y a quelques jours, j'ai écrit sur « Implémentation de la pagination dans les procédures stockées » et « Explication détaillée des événements de contrôle GridView » Plus tard, certaines personnes m'ont demandé comment appliquer ce genre de choses dans GridView. , principalement comment Il y a un problème avec l'enregistrement du numéro de page PageIndex de la page actuelle, mais tout est plus facile à résoudre Parce que dans le processus de pagination : PageSize est certain, nous pouvons utiliser un attribut pour le représenter. enregistrez PageIndex, et les données ne sont pas très volumineuses, il n'y aura pas beaucoup de ressources. Comme le dit un vieil adage, peu importe le nombre de mots prononcés, il n'y a pas d'exemples intuitifs.
Ici, nous utiliserons un champ caché
.pour enregistrer le PageIndex, qui est le numéro de page actuel Lorsque vous cliquez sur la page précédente, sa valeur sera décrémentée. Tout d'abord, on sait qu'elle est 0. Une chose à noter est que le numéro de page de la première page ici est 0. au lieu de 1. Jetons un coup d'œil au code, puis nous l'analyserons !
1<asp:GridView ID="NewsGrid" runat="server" AutoGenerateColumns="False" AllowPaging="false" width="100%">
2 <Colonnes>
3 <asp:BoundField DataField="NewsId" HeaderText="NewsID"/>
4 <asp:HyperLinkField DataNavigateUrlFields="NewsId" DataNavigateUrlFormatString="~/Details.aspx?ID={0}"
5 DataTextField="Titre" HeaderText="Titre de l'actualité" ItemStyle-Width="70%"/>
6 <asp:BoundField DataField="PostTime" HeaderText="Post Time"/>
7 <asp:CommandField HeaderText="Gestion des actualités" ShowCancelButton="False" ShowDeleteButton="True"
8 ShowEditButton="Vrai"/>
9 </Colonnes>
10 </asp:GridView>
11 <div style="hauteur:16px; padding-top:5px; margin-right:30px; float:right">
12 <asp:HiddenField ID="CurrentPage" runat="server" Value="0"/>
13 <asp:LinkButton ID="First" runat="server" CommandArgument="first" OnClick="PagerButton_Click">Accueil</asp:LinkButton>
14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev" OnClick="PagerButton_Click">Page précédente</asp:LinkButton>
15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next" OnClick="PagerButton_Click">Page suivante</asp:LinkButton>
16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last" OnClick="PagerButton_Click">Dernière page</asp:LinkButton>
17 </div> Code dans le fichier CS :
1 void protégé PagerButton_Click (expéditeur de l'objet, EventArgs e)
2 {
3 int pageIndx = Convert.ToInt32(CurrentPage.Value);
4 totaux entiers = NewsManager.GetNews(0, pageSize).TotalRecords ;
5 pages int = (totaux % pageSize) == 0 (totaux / pageSize) : (totaux / pageSize + 1);
6 chaînes arg = ((LinkButton)sender).CommandArgument.ToString().ToLower();
7 commutateur (argument)
8 {
9 cas "précédent":
10 si (pageIndx > 0)
11 {
12 pagesIndex -= 1 ;
13}
14 pause;
15 cas "suivant":
16 si (pageIndx < pages - 1)
17 {
18 pagesIndex += 1 ;
19}
20 pause;
21 cas "dernier":
22 pageIndx = pages - 1 ;
23 pause;
24par défaut :
25 pageIndex = 0 ;
26 pause;
27}
28 CurrentPage.Value = pageIndx.ToString();
29 NewsGrid.DataSource = NewsManager.GetNews(pageIndx, pageSize).Entities;
30 NewsGrid.DataBind();
31}
N'est-ce pas très simple ? Vous l'aurez compris après avoir lu le code. Je n'entrerai pas ici dans les détails de l'utilisation des boutons pour passer des paramètres. Il y a aussi l'attribut Entities dans « La classe d'entité d'application EntitySet implémente des fonctions génériques similaires. > ici peut être trouvé dans les articles
http://www.cnblogs.com/xdotnet/archive/2006/09/29/gridview_paging_myself.html