2008年10月21日

ASP.NET DataSetでバインドさせているGridViewでページング機能を使用する。

 ASP.NETのGridViewには、項目が多いときにページを折り返す機能「ページング」があります。

 「ASP.NET GridViewのページングを行う。 DataSourceコントロールを使用している場合。」で説明した方法は、DataSourceコントロールを使用して、GridViewにバインドさせているときの方法でした。

 コード上でDataSetを作成し、GridViewにバインドさせている場合では、上記のページの方法では機能しません。

 GridViewのページングの方法が記載されているWEBページなどでは、「GridViewのプロパティの「AllowPaging」を「True」にする」程度しか説明されていない場合が多いため、実際には「AllowPaging」を「True」にしただけではページング機能は有効になりません。

 でも、「AllowPaging」を「True」にする必要はあります。

 では、その方法を。。。。

>>>


>>>

 まずaspxファイルに配置されたGridViewのプロパティの、「AllowPaging」を「True」にします。
 下図のようにGridViewの下にページの数値が表示されます。
 sample011-GridviewPaging004.JPG

 次からは、コード上で設定をしていきます。

1:GridViewにデータをバインドさせる。
<コード>
============================================================

  Dim ds As DataSet
  Dim sql As String
  sql = "SELECT * FROM test"

  'データを取得します。
  'data()は、私が勝手に作っている関数なので、
  'ここは、DataSetを取得する方法を取ってください。

  ds = data(sql)

  'GridViewにデータをセットします。
  GridView2.DataSource = ds
  GridView2.DataBind()

  'ここがミソ。
  'データセットを後でも使いたいので
  'Sessionオブジェクトに格納。
  Session("data") = ds

============================================================

2:GridViewの「PageIndexChanging」イベントで、処理を行う。
<コード>
============================================================
  Private Sub GridView2_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView2.PageIndexChanging

    '第二引数から、選択されたページindexを取得。
    'GridViewのページIndexに設定。
    GridView2.PageIndex = e.NewPageIndex

    'GridViewに再度データをバインドさせる。
    '先ほどのデータセットを格納。

    GridView2.DataSource = Session("data")
    GridView2.DataBind()

  End Sub
============================================================

 この方法で実現できました。
 要するに、「PageIndexChanging」で再度データをバインドさせる必要があるということですね。

 今回私の例では、一度取得したDataSetを使いまわすという方法ですので、使いまわしているうちにデータに変化があった場合は反映されません。
 常に最新のデータで表示させる必要があるのでしたら、「PageIndexChanging」ごとにデータを取得する必要がありますね。



Yahoo!ブックマークこのエントリをLivedoorクリップに追加イザ!ブックマークBuzzurlにブックマーク

posted by Debring at 16:13 | Comment(1) | TrackBack(0) | ASP.NET GridView
この記事へのコメント
参考にさせていただきました。
ありがとうございます。
Posted by 通りすがり at 2010年09月29日 11:23
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。