数日前、《ストアド プロシージャでのページングの実装》と《GridView コントロール イベントの詳細な説明》について書きましたが、その後、これを GridView に適用する方法を質問されることがありました。実際、これは非常に簡単です。 、主に方法 現在のページのページ番号 PageIndex を保存する際に問題がありますが、ページング プロセスでは PageSize が確実であるため、属性を使用してそれを表すことができます。 PageIndex を保存する場合、データはそれほど大きくありません。古いことわざにあるように、どれだけ言葉を尽くしても、わかりやすい例はありません。
ここでは隠しフィールドを使用します。現在のページ番号である PageIndex を保存します。前のページがクリックされると、その値は 0 になることがわかっています。注意すべき点は、最初のページのページ番号が 0 であることです。コードを見て、それを分析してみましょう。
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="height:16px;padding-top:5px;margin-right:30px;float:right">
12 <asp:HiddenField ID="現在のページ" runat="サーバー" 値="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 protected void PagerButton_Click(オブジェクト送信者、EventArgs e)
2 {
3 int pageIndx = Convert.ToInt32(CurrentPage.Value);
4 int 合計 = NewsManager.GetNews(0, pageSize).TotalRecords;
5 int ページ = (合計 % pageSize) == 0 ? (合計 / pageSize) : (合計 / pageSize + 1);
6 文字列 arg = ((LinkButton)sender).CommandArgument.ToString().ToLower();
7 スイッチ (引数)
8 {
9 ケース「前」:
10 if (pageIndx > 0)
11 {
12 ページインデックス -= 1;
13}
14 休憩。
15 ケース「次」:
16 if (pageIndx < ページ - 1)
17 {
18 ページインデックス += 1;
19}
20休憩。
21 ケース「最後」:
22 pageIndx = ページ - 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