- PR -

GridViewでのカスタムページング

1
投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-07 17:05
VS:2005
asp.net2.0

いつも参考にさせていただいております。
初めてGridViewコントロールを使用することになったのですが、
カスタムページングの部分で悩んでおります。

本システムはWebサービスを介し、データベースよりデータを取得します。
今回Webサービスからは、全体のデータ件数(100)と、
1ページ分のDataSet(15件分)が返されます。
この二つのデータを元にGridViewでカスタムページングを行いたいのですが、
ObjectDataSourceコントロールを使用するサンプルしかなく、
この方法以外ではできないのかと思案中です。

あるUIコンポーネント製品を使用すると、Gridのプロパティに全体の件数を設定でき、
Gridには取得したDataSetをバインドするだけでうまくできたりするのですが、
既存のGridViewで同様な事が可能なのでしょうか?
なるべく製品は使用したくありません・・・。

もしよい方法をご存知の方がいらっしゃいましたら、
ぜひアドバイスお願いいたします。



Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-02-08 06:29
GridViewにカスタムページングを実装するには、
ご指摘のようにObjectDataSourceを使用することになります。

Webサービスからすべてのデータ(100件)が返されるのであれば
カスタムページングは不要かと。

カスタムページングを実装するには、Webサービスから1ページ分の
データ(10件)を返すような仕様にする必要があるのでは?
(たとえば、引数にページ番号を渡すなど・・・)


Webサービス経由で100件のデータを取得して10件単位で
ページングさせるのでしたら、DataSetをキャッシングさせたら
どうでしょうか。

さらに高速化するには、UpdatePanelを追加してGridViewに
AJAXを適用することもできます。

※UpdatePanelの代わりにEnableSortingAndPagingCallbacks=Trueでもよい。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-08 13:15
Accessさん、ご返答ありがとうございます!

私の書き方が悪かったようですいません。
100件返されるというのは、件数です。intです。
DataSetではありません。

DBへのアクセスは全てWebサービス側で行うので、
ObjectDataSourceを使う必要がないんですよね・・・。
となると、そもそもGridViewを使う必要性もないのかもしれません。

ページ表示が便利だなと思ったのですが、
そもそものところからもう一度考えた方がよさそうですね。


Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-02-09 06:05
引用:

DBへのアクセスは全てWebサービス側で行うので、
ObjectDataSourceを使う必要がないんですよね・・・。
となると、そもそもGridViewを使う必要性もないのかもしれません。
ページ表示が便利だなと思ったのですが、
そもそものところからもう一度考えた方がよさそうですね。


GridViewのページャーに表示するページ番号(または移動ボタン)を自前で
用意するか、GridViewに委ねるかによると思います。

Webサービスから合計件数とカレントページに表示するデータが返るなら
ObjectDataSourceが使えるのでは?

ところで、今回のWebサービスはアマゾン(Amazon)のAWSと同じ仕様ですよね。
私なら、ObjectDataSourceを使用してカスタムページングを利用します。

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2007-02-09 13:38
Accessさん、いつもありがとうございます!

>GridViewのページャーに表示するページ番号(または移動ボタン)を自前で
>用意するか、GridViewに委ねるかによると思います。

そうなんです。ページ番号だけ自前でもよいかなと考えたりしました・・・。

引用:

Webサービスから合計件数とカレントページに表示するデータが返るなら
ObjectDataSourceが使えるのでは?
ところで、今回のWebサービスはアマゾン(Amazon)のAWSと同じ仕様ですよね。
私なら、ObjectDataSourceを使用してカスタムページングを利用します。



そうなんですか!
合計件数とカレント表示用DataSetをどのようにObjectDataSourceにセットするのかが
わからず悩んでおりました。(そして悩み中です)
GridViewの合計件数のプロパティはGetのみだったりして。
このプロパティにセットできれば、それでOKだったんですけどね。

ObjectDataSourceについて、もう少し勉強してみます。



Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-02-10 10:58
Webサービスを利用する前に、GridViewとObjectDataSourceで
カスタムページングを実装するサンプルを作成してみたらどうでしょうか。

あとは、サンプルをWebサービス化するだけで可能かと。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
1

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