- - PR -
グリッドの列ヘッダ固定とModalPopupの共存について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-02-28 11:03
いつも勉強させていただいています。
今回どうしてもわからない問題がありましたので質問させていただきます。 環境:asp.net vb2005 下記等のサイトを参考にグリッドの列ヘッダを固定にするスタイルシートを使用しています。 http://blogs.yahoo.co.jp/ogiwara_hsk/32105274.html また、同じ画面でASP.NET AJAX Control Toolkitに含まれる「ModalPopup」コントロールを使用しています。 この2つの仕組みを同じ画面で使用すると片方の動きがおかしくなり困っています。 具体的には下記のようなDOCTYPEの指定を明示的に記述すると、グリッドの列ヘッダ固定のCSSの動きが おかしく、ブラウザのサイズがグリッドより小さくした場合(ブラウザのスクロールバーが表示される場合)に 列ヘッダ部が移動してしまいます。 Topの位置取得がページtopからではなく表示されているtopからの計算になっているような感じです。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 逆にDOCTYPEを記述しない場合には「ModalPopup」コントロールの表示位置がIEのVerにより若干違うのですが 画面の左上に表示されたり画面の下端に表示されたりします。 DOCTYPEによる動作の違い等があることはわかったのですが2つの仕組みを両立する方法がわかりません。 現状の画面は2つの仕組みをMultViewを使った別のViewにそれぞれ配置しているため、 同時に2つが機能するわけではないのでDOCTYPEの宣言を動的に出力できないかとも考えたのですが その方法もみつけることができませんでした。 何か解決策がございましたらご教授ください。 | ||||
|
投稿日時: 2008-02-28 11:58
固定ヘッダーのスタイルシートを下記の様に修正。
top:expression(this.offsetParent.scrollTop); ↓ top:expression(this.scrollTop); これで解決しませんか? | ||||
|
投稿日時: 2008-02-28 12:23
くまっちさんありがとうございます!
スタイルシートの変更で対応できました。 すみませんがもうひとつ質問お願いいたします。 スタイルシートの修正でグリッドのヘッダは固定されるようになりましたが ModalPopupを正常に動くようにDOCTYPEの記述をのせると グリッドの幅を100%にしていたものが、スクロールバーの幅関係なく100%で認識するようになります。 これをスクロールバーが表示される場合はそれ以外の部分で100%というような 幅の指定はできないものでしょうか? <div width=100% ...>タグの内部にGridViewを配置しているのですが、 GridViewのWidthを<div>のwhidth-10px(スクロールバーの幅の分)というような設定でも いいのですが、単純にGridViewの幅を95%等で指定するとブラウザの幅によって 隙間にズレが出るのでどうにかしたいと考えています。 何か策があればご教授いただけたらと思います。 よろしくお願いいたします。 | ||||
|
投稿日時: 2008-02-28 13:15
%指定では、親のWidthに合わせられるので
スクロールバーが有ると、ズレが出てしまいます。 そこで、下記の対策を提案いたします。 スタイルシートクラスを定義
そして、GridViewのCssClassに上記のMaximumWidthを設定。(Width指定は無し) 要はDivのclientWidth(表示領域幅)にGridViewのwidthを合わせるわけです。 これで思ったとおりの表示になりませんか? | ||||
|
投稿日時: 2008-02-28 15:44
くまっちさんありがとうございます!
思ったとおりの動きになりました。 どうもありがとうございました。 |
1