- - PR -
DataGRIDのページについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-06 13:44
たびたびお世話になっております。
.NET VB開発環境下で、 DataGRIDにDBデータを表示することはできました。 次にページの制御をするのですが、マニュアル通りに行うと、 DataGRID1.CurrentPageIndex = e.NewPageIndex DataGRID1.DataBind() ということのようです。 DataGRID1.DataBind() の部分でエラーが表示されてしまいます。 「CurrentPageIndex 値が無効です。 値は 0 以上で PageCount より小さくなければなりません。」 とか言ってきます。 PageCountは28で、CurrentPageIndexは0から以上の値を設定しようとしています。(デバッガより) DataBind()を行わないと、当然ですがデータ表示に変化はありません。 どなたか、初心者を救済してください。 よろしくお願いします。 | ||||||||
|
投稿日時: 2004-08-06 14:24
回答にはなっておりませんが...
↓この辺を良く読んで試してみれば、まずつまづかないかと重いますが...(^^; http://www.atmarkit.co.jp/fdotnet/dotnettips/068pagingdg/pagingdg.html http://www.atmarkit.co.jp/fdotnet/dotnettips/069numericpg/numericpg.html 参考程度に http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6768&forum=7 # (Webアプリ or Winアプリ!?) | ||||||||
|
投稿日時: 2004-08-06 14:56
えんぞ@さんありがとうございます。
早速拝見させていただきました。 たぶん、 が、やはりうまくいきません。 プロパティのAllowPageなど、ページ関係のプロパティはTrueになっていて、 イベントの取得もOKです。 DataGRID1.CurrentPageIndex = e.NewPageIndex DataGRID1.DataBind() <==ここでエラーになってしまいます。 「CurrentPageIndex 値が無効です。 値は 0 以上で PageCount より小さくなければなりません。」 やはりエラーです。 ># (Webアプリ or Winアプリ!?) Webアプリです。 いろいろ探しても、ASP .NETのサンプルやBBSが多く、 もしかして、.NET VBではできないことなのでしょうか? | ||||||||
|
投稿日時: 2004-08-06 15:24
念のためですが...
↑の前ではちゃんとDataGridのDataSourceへDataSet等の値をセットしてますよね!? | ||||||||
|
投稿日時: 2004-08-06 15:26
こんにちは。
たぶんですが、DataBindする前にDataSourceをセットしていないことが原因だと思われます。 Web用DataGridはページ切替時でも再度DataSourceに入れるデータを作り直してセットする必要があります。自分も最初「なに〜〜?」と思った記憶が。。。。 #かぶっちゃいました(^^; [ メッセージ編集済み 編集者: nodera 編集日時 2004-08-06 15:27 ] | ||||||||
|
投稿日時: 2004-08-06 15:49
えんぞ@見習さん、noderaさんありがとうございます。
ソースは、 DataGRID.DataSource = DataSet11 DataGRID.CurrentPageIndex = e.NewPageIndex DataGRID.DataBind() <==ここでエラー こんな感じです。 CurrentPageIndexには0が入っていて、NewPageIndexには1が入っています。 >Web用DataGridはページ切替時でも再度DataSourceに入れるデータを作り直してセットする必>要があります。自分も最初「なに〜〜?」と思った記憶が。。。。 私もそう思いました。また、どっかのサンプルでもDataSourceに入れていたので、 すでに、真似をしてみましたが、同じでした。 FILL() は不要ですよね?DataSetをDataSourceに再設定するだけですよね? いろいろやって、CurrentPageIndexをいじらない DataGRID.DataSource = DataSet11 DataGRID.DataBind() <==もんだいなし エラーは発生しないが、表示はなぜか変。 まぁ、ここの表示がおかしいのはおいておくことにします。 いろいろやって、 DataGRID.DataSource = DataSet11 DataGRID.DataBind() <==もんだいなし DataGRID.CurrentPageIndex = e.NewPageIndex DataGRID.DataBind() <==ここでエラー という感じです。 やはりCuurentPageIndexをいじられるのがいやのようですね。 なんとなく、CurrentPageIndexの値とNewPageIndexの値が デバッガ−で見えているのと実は違うのではないかと心配になってきました。 あとは、プロパティ類ですよね? | ||||||||
|
投稿日時: 2004-08-06 15:54
上の2行を逆にしたら幸せになれるかも・・・。 つまり・・・
最後の1行が余分ってことです。 [ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-08-06 15:58 ] | ||||||||
|
投稿日時: 2004-08-06 16:08
NAL-6295さん、ありがとうございます。
いただいたご意見通りやってみました。 エラーはなくなるのですが、表示がおかしくなります。 次ページの表示のつもりが、項目(列の見出し)だけになってしまいます。 データ行は1行も表示されません。 認識が間違っていたらごめんなさい。 マニュアル等で読んでいる感じでは次のように認識しています。 1.データのページ管理はDataGridが行っている。 2.設定されているDataSetから指定されたページに相当する部分を表示する 3.表示ページをCurrentIndexPageに設定し、DataBindで表示を行う (DataBindか、ReDisplayメソッドで、表示ページを参照するメソッド?) となります。 ご指摘いただきました件、「もしや」と思いやってみましたが、 プロパティを変更したことによるメソッドが発生するような記述が マニュアルに見つからないので、やはりDatabindは必要なのではないでしょうか? あれ?ちょっとまってください! 表示がおかしくなるということは、トリガー的なメソッドが発生していることですよね? ん〜、ということは何かが不足しているからでしょうか? |