- - PR -
DataGridのウィンドウ枠の固定
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-13 16:57
みなさまにはいつもお世話になっております。
ASP.NET(VB.NET)で、DataGridコントロールを使用して、 表を表示する簡単なWebページを作成したのですが、 行数、列数ともに多く、スクロールすると行や列の項目名が 視界から消えてしまい、見づらいのでなんとかしようと思っております。 EXCELでは「ウィンドウ枠の固定」という便利な機能がありますが、 DataGridで似たような機能て実現できるのでしょうか? 以上よろしくお願いいたします。 | ||||
|
投稿日時: 2004-04-14 18:31
「ウインドウ枠固定」はないはずです。
僕の場合は、見出し用のDataGridと明細用のDataGridを2つ作成しました。 | ||||
|
投稿日時: 2004-04-14 18:52
自己レスです。
ご指摘の通り、DataGridだと難しいので、グレープシティ社の<A HREF="http://www.grapecity.com/japan/support/database/P7_224.htm" TARGET="_blank">「Spread for .NET」</A>を使用 しようかと思っています。 まずはトライアル版で試してみたのですが、簡単なプログラムを作成しても、行が10行しか表示されないのです。 FpSpread1.Sheets(0).RowCount = 100 のように指定するのですが、なぜだめなのでしょうか? どなたか同じ悩みを抱えている方はいらっしゃいませんか? | ||||
|
投稿日時: 2004-04-14 21:07
こんにちは。
私も同じことやりましたよ。やり方はマシューさんと同じ方法です。 Webアプリだったのでスタイルシートを使って、DataGridを二枚作成して 同じ位置に重ね、下側(表として使用)は全て表示し、上側(固定する見出し部分)は 一行分だけ表示するように組み込んだ上で、下のテーブルのみスタイルシートで スクロールバーを付けました。 自力でやらずに「Spread for .NET」を使用するか?という話も出たのですが、 それだと幅をパーセント指定にしてもWindowリサイズ時に グリッドのサイズが変わらないらしいので…。 ちなみに、MicrosoftのWindowsUpdateのサイト(asp使用)で、 パッチを当てた履歴を見れるページがありますが、そこに見出し固定のテーブルがありますよ。 #必死でソースを覗こうとしたのですが、途中まで追いかけて断念しました… | ||||
|
投稿日時: 2004-04-15 09:00
2行1列のtableを作り、1列目に見出し用のDataGridを配置。2列目にはdiv要素を配置して、その中にDataGridを配置。div要素のスタイルを相対位置、オーバーフロー時はスクロールにして、・・・って、どこかのスレッドに例へのリンクがありますので、探してみてください。。。
| ||||
|
投稿日時: 2004-04-15 09:30
>Jittaさん
私は全く同一のDataGridを作って座標指定でぴったり重ね、 下にも上にも外側にそれぞれDivをかましています。 上は一行分の高さを指定して、スタイルのoverflowはHidden。 下は表示したい高さを指定して、スタイルのoverflowにautoかscrollです。 最初Jittaさんと同じ方法で、垂直にではなく上下に普通にDataGridを並べたのですが、 列幅が固定でない場合(nowrap指定でデータにより伸びる可能性がある場合なども)に 見出しテーブルと明細テーブルで縦の罫線がずれてしまいました。 なので、見出し用テーブルにも非表示の部分に明細テーブルと同じデータを持たせていました。 # WindowsUpdateのサイトに綺麗なサンプルがあるのですがソースが見れません。 あれはどうなってるんだろう? | ||||
|
投稿日時: 2004-04-15 09:35
列の幅に狂いが出ないことが保証されている場合は
見出しだけ書いたテーブルを上に置いておくだけでいいと思うのですが、 明細テーブルにどんな値が入ってきてもずれないようにする為には 上で書いた様な方式が確実かな、と思います。 2回同じこと書いてますね。すいません。<Updateのページ | ||||
|
投稿日時: 2004-04-15 09:44
「あ、こんなのもあるんだ」程度にしか見ていませんが。。。
データ表示用のdgdDataと、タイトル用のdgdTitleを用意する。dgdData高さをウインドウサイズに追従させるのは、
タイトルとデータのグリッド幅も、JavaScript側で整える。 dgdTitleのスタイルを、 style="position:absolute;overflow:hidden;" として、実行時にdgdDataのoffsetTopに移動させればどうでしょう?つまり、スクロールが一番上にある(変な表現?)時は、dgdDataのタイトルと、dbdTitleが重なって表示されている、と。横も、同じように出来るのではないでしょうか??? |