- PR -

DataGridのページング機能の表示

投稿者投稿内容
ブーンw
会議室デビュー日: 2005/07/18
投稿数: 13
投稿日時: 2005-07-26 21:55
DataGridのページ表示を<< 1,2,3,4,5,6,7,8,9,10... >>と表示し、番号を押すとそのページへ移動、「<<」を押すと前の10件、「>>」を押すと次の10件を表示したいのですができるのでしょうか??
番号だけや「<<、>>」だけなら表示できるのですが・・
じーえす風
会議室デビュー日: 2005/07/26
投稿数: 12
投稿日時: 2005-07-26 22:12
DataGrid単体ではできないようです。
基本の情報はここです。

DataGrid Web サーバー コントロール内のページング動作の指定
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskspecifyingpagingbehaviorindatagridwebcontrol.asp

ここにある『カスタム移動コントロールによる既定のページングの使用』によると、DataGridによる移動ボタンの表示は行わず自力でコントロールを準備せよとあります。
CurrentPageIndexやPageCountプロパティを参照して作るしか無いようです。
#簡単な方法があれば私も知りたいです

下記のようなトリッキーな手段を応用し、DataGrid内に組み込むことも出来るかと思います。

@IT:.NET TIPS [ASP.NET]DataGridコントロールのページ移動ボタンをカスタマイズするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/072modpager/modpager.html
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-07-27 09:24
引用:

じーえす風さんの書き込み (2005-07-26 22:12) より:
下記のようなトリッキーな手段を応用し、DataGrid内に組み込むことも出来るかと思います。

@IT:.NET TIPS [ASP.NET]DataGridコントロールのページ移動ボタンをカスタマイズするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/072modpager/modpager.html



ですね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11548&forum=7
ブーンw
会議室デビュー日: 2005/07/18
投稿数: 13
投稿日時: 2005-07-27 11:59
みなさん回答ありがとうございました。
おかげさまで、<< 1,2,3,4,5,6,7,8,9,10... >>と表示できました。
<<を押すと前の10件、>>を押すと次の10件に移動するので10の後の...を消したいのですが無理なのでしょうか?(...を押しても次の10件に移動してしまう)
じーえす風
会議室デビュー日: 2005/07/26
投稿数: 12
投稿日時: 2005-07-27 14:40
todoさんのサンプルはNumericPagesモードがベースなので、NextPrevモードをベースにして数字リンクを自力で作ればいいかと思います。
#もしくは全部を自力で描画
この手の処理の実現は一番プログラマ仕事らしいところですね。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-07-27 14:58
ども、ぼのぼのです。

おもしろそうだったのでtodoさんのサンプルを参考に作ってみました。
ただ、同じことやってもつまらないので、ちょっと違うアプローチで。
考え方としては、「...を直接≪前ページ 次ページ≫に変えちまえ」です。
サンプルコードはVB.NETです。C#の場合は脳内変換してくださいw

コード:
Private Sub DataGrid1_ItemCreated( _
    ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) _
    Handles DataGrid1.ItemCreated

    If e.Item.ItemType = ListItemType.Pager Then
        Dim pager As TableCell = e.Item.Cells(0)
        Dim i As Integer
        Dim flg As Boolean = True

        For i = 0 To pager.Controls.Count - 1
            If TypeOf (pager.Controls(i)) Is LinkButton Then
                Dim lkb As LinkButton = CType(pager.Controls(i), LinkButton)
                If flg Then
                    If lkb.Text = "..." Then
                        lkb.Text = "≪前ページ"
                    End If
                    flg = False
                Else
                    If lkb.Text = "..." Then
                        lkb.Text = "次ページ≫"
                    End If
                End If
            End If
        Next
    End If
End Sub


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-27 21:26

> 考え方としては、「...を直接≪前ページ 次ページ≫に変えちまえ」です。
 脳内実行したところ、「例えば100ページあって、1ページ目が表示されているときは『1 2 3 <<前ページ』みたいな表示になる』ような気がしたのですが、どうでしょう?

_________________
ブーンw
会議室デビュー日: 2005/07/18
投稿数: 13
投稿日時: 2005-07-28 09:37
みなさん回答ありがとうございました!!
まだ.NET初めて一ヶ月程度の初心者なので本当に助かりました!!

スキルアップ/キャリアアップ(JOB@IT)