数日前、《ストアド プロシージャでのページングの実装》と《GridView コントロール イベントの詳細な説明》について書きましたが、その後、これを GridView に適用する方法を質問されることがありました。実際、これは非常に簡単です。 、主に方法 現在のページのページ番号 PageIndex を保存する際に問題がありますが、ページング プロセスでは PageSize が確実であるため、属性を使用してそれを表すことができます。 PageIndex を保存する場合、データはそれほど大きくありません。古いことわざにあるように、どれだけ言葉を尽くしても、わかりやすい例はありません。
ここでは隠しフィールドを使用します。現在のページ番号である PageIndex を保存します。前のページがクリックされると、その値は 0 になることがわかっています。注意すべき点は、最初のページのページ番号が 0 であることです。コードを見て、それを分析してみましょう。
1
2 <コラム>
3
4 5 DataTextField="タイトル" HeaderText="ニュース タイトル" itemStyle-Width="70%"/>
6
7 8 ShowEditButton="True"/>
9 コラム>
10
11
12
13
ホーム 14
前のページ 15
次のページ 16
最後のページ 17
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