- PR -

1つのテーブルを複数のDataGridに表示したい

1
投稿者投稿内容
kei
会議室デビュー日: 2005/11/30
投稿数: 5
投稿日時: 2005-11-30 13:45
初めて利用します。
XP VB.NET で開発しています。
よろしくお願いいたします。
1つのテーブルに500件以上レコードが入っていて全て表示したいのですが、
項目は3つしかありません。
3列20行のDataGrid(Webフォーム)を1画面に4つ(横に並べて)表示したいのです。
1つのDataGridに20件表示できるので次のページになった場合は91レコード目からの表示になります。
配列を使うのか・・・。レコード番号で取得するのか・・・。
何をどうしたら一番よいのか悩んでいます。
どうかよろしくお願いします。

kei
会議室デビュー日: 2005/11/30
投稿数: 5
投稿日時: 2005-11-30 13:58
すみません...。間違えてました。
次のページになった場合は81レコード目からの表示でした。
よろしくお願いします。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-11-30 14:28
3列のデータテーブルを12列のデータテーブルにデータを配置し直して、それを一つのデータグリッドにバインドして表示させるのが簡単だと思います。

[ メッセージ編集済み 編集者: trapemiya 編集日時 2005-11-30 14:28 ]
kei
会議室デビュー日: 2005/11/30
投稿数: 5
投稿日時: 2005-11-30 14:50
早速の返答、ありがとうございます。
新しいデータテーブルを作成してそれをバインドするのが簡単なのですね。
そうなると、次のページのリクエスト(ファンクションキーに設定)がきた場合は
81レコード目からまた作成しなおして表示。ということになるのでしょうか・・・。
いや!違いますよね。
For Next 等 使って20行4×3列分(80番目のレコードまで)が
1枚の画面に入るように全件レコードを新しいデータテーブルに作り直しちゃう。
って事ですよね。
あぁっ。なんか理解したんだかしてないのだか・・・。
これでいいのでしょうか・・・。

[ メッセージ編集済み 編集者: kei 編集日時 2005-11-30 14:52 ]
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-11-30 15:03
1画面に20行と固定されているなら、最初の80件までを20行にセットし、次の80件を21行目から40行目までにセットし・・・を繰り替えてデータテーブルを作成し、それをデータグリッドにバインドして、後は、データグリッドのページング機能を使っちゃうというように私は構想しました。構想だけで実際にやったことはありません。(^^;
kei
会議室デビュー日: 2005/11/30
投稿数: 5
投稿日時: 2005-11-30 15:23
ありがとうございます。
.Net歴2ヶ月弱なので、なにをどうしたら一番良いのかがわからなかったりするのです。
いろんなロジックは考えられるのですが、遠回りしてるような気がしたり、
もっと簡単な方法があるのではないか?って考えたり、もんもんとしてました。
今回の返答で私の頭の中にイメージはできました。
実際にやってみて、上手くいったらまた報告します。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-12-01 15:48
こんにちは。

一応別案として、スレタイ通りの「複数のDataGridを使用する」方法を。

まず、画面上に5つのDataGridを配置します(仮にdg1〜5とします)。
この5つのDataGridに、同じDataSourceをセットしてDataBindさせます。

dg1はページャ用。PageSizeを80にしておいて、
ページャ以外の部分を非表示にします。
ヘッダとフッタはプロパティビルダから非表示にできますが、
本体は画面デザイナから非表示にできないので、これを応用します。
#背景色を設定してるとこをVisible=falseに変える

dg2〜5は表示用。PageSizeを20にし、ページャを非表示にします。
DataBindする前に、CurrentPageIndexをそれぞれ0,1,2,3にします。

ページ切換時は、dg1のPageIndexChangedのイベントハンドラで、
dg2〜5のCurrentPageIndexをe.NewPageIndex×4+0,1,2,3にして、
再度DataBindします。

最終ページで表示データ数が60以下のときは、
データ数に応じてdg3〜5のVisibleをFalseにして、
DataBindしないようにし、表ごと非表示にしてしまいます。
kei
会議室デビュー日: 2005/11/30
投稿数: 5
投稿日時: 2005-12-01 16:54
ぼのぼのさんありがとうございます!
読みながら、へぇ〜なるほどぉ・・・。と感動してしまいました。
こんなやり方思いつきませんでした。いろいろとあるのですね。
現在は先の方法でテスト画面作成中で、やっとページングができるようになったところです。
いい感じです。trapemiyaさんありがとうございました!
いまから本番画面を作成しようと思います。
実は似たような画面作成依頼がまだあって、
ぜひともぼのぼのさんのやり方を使ってみたいと思っています。
1

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