- PR -

GridViewのスクロールバー

1
投稿者投稿内容
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2006-11-10 12:52
こんにちは。
ASP.NET C#2.0 IE6で開発を行ってます。
よく質問を見かけるGridViewのスクロールバーについて質問です。

現在、以下のような設定でGridViewを使用しております。

.GridStyle
{
overflow:auto;
width:100%;   ←500pxにするとスクロールが表示される
height:480px;
}

<div class="GridStyle">
<asp:GridView ID="grdList" runat="server" Width="1800px">
〜省略〜
</asp:GridView>
</div>

列が多いため、divのスクロールを表示してますが、上記スタイルシートの
widthを100%にするとdivのスクロールが利かなくなり(divが無いような感じ)、
IEのスクロールが表示されてしまいます。
divの幅をIEの幅と同期させ、かつdivの中でgridviewのスクロール表示を行う
ことはできないのでしょうか?

これで伝わってますでしょうか?
HTMLの質問の要素が大きいかも知れませんが、どうぞ宜しくお願いいたします。
(ちなみにパネルコントロールでもダメでした。)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-10 15:52
引用:

Qさんの書き込み (2006-11-10 12:52) より:

divの幅をIEの幅と同期させ、かつdivの中でgridviewのスクロール表示を行うことはできないのでしょうか?


よくわかりませんが、ブラウザの幅に合わせてということですよね。
であれば、JavaScript などで動的に設定するしかないのではないでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-11-10 16:12
引用:
列が多いため、divのスクロールを表示してますが、上記スタイルシートの
widthを100%にするとdivのスクロールが利かなくなり(divが無いような感じ)、
IEのスクロールが表示されてしまいます。
divの幅をIEの幅と同期させ、かつdivの中でgridviewのスクロール表示を行う
ことはできないのでしょうか?

うちではIE6ですがちゃんと、DIVのスクロールが表示されましたよ。
DIVの親が何かによるかな。DIVがBODY直下ならBODYのSTYLEとかによるかな。
一応、明示的にスクロールさせたいなら、overflow:scroll; が正しいです。

[追記]
以下のhtmlファイルをブラウザで開いたとき、ちゃんとDIVのスクロールが表示されると思いますが
そうであれば提示されていないHTMLのどこかに原因がありそうです。
以下のHTMLでもブラウザのスクロールが表示されるなら環境的な問題?
コード:

<html>
<head>
<style>
.GridStyle
{
overflow:auto;
width:100%;
height:480px;
}
</style></head>
<body>
<div class="GridStyle">
<div style="width:1800px;">
</div>
</div>
</body>
</html>



[ メッセージ編集済み 編集者: べる 編集日時 2006-11-10 16:28 ]
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2006-11-10 17:44
じゃんぬねっとさん、べるさん返信ありがとうございます。

>べるさん
頂いたHTMLではうまくdivが100%になり、さらにその中でスクロールがでました。

すいません。肝心な情報が抜けてました。(まさかこれが影響するとは・・・)
下記の通り、マスターページ内のコンテンツページファイルでGridViewを使ってます。
※スタイルシートは外部ファイルで、マスターページの<head>内で宣言してます。
<asp:content>
<div class="GridStyle">
<asp:GridView ID="grdList" runat="server" Width="1800px">
〜省略〜
</asp:GridView>
</div>
</asp:contet>

コンテンツページではなく、独立したWebFormに同様の記述をしたら、
求めていたブラウザの幅にdiv幅を合わせ、その中にGridViewを入れてスクロールと
いうのができました。
コンテンツページ内では100%の幅指定に何かしら強制力があるのでしょうか?


>じゃんぬねっとさん
JavaScriptという選択肢は頭にありませんでした。。
そちらも視野に入れて実現に向かいたいと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-10 17:52
引用:

Qさんの書き込み (2006-11-10 17:44) より:

JavaScriptという選択肢は頭にありませんでした。。
そちらも視野に入れて実現に向かいたいと思います。


ごめんなさい、普通に勘違いしていました。
先のレスは忘れてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-11-10 21:08
当方ではマスターページを使っても正常にスクロールが表示されましたよ。

500pxにするとスクロールが表示される、ということは.GridStyle自体は適用されているのですよね?
(background-color:Red;とか書いたら赤くなりますよね)

ちなみに100%という指定は、元々ブラウザのウインドウサイズに対する割合では
ありません。親ボックスに対する割合です(divの外にdivとか)。

出力されたHTMLをちょっとずつ変えていって原因を特定するしかないかな。。

スタイルが適用されないということなら以下のような問題がありますけどね。
1、cssファイルのパス指定の問題
マスターページからのパスを指定すると出力時にコンテンツページからのパスに書き換わる
2、コントロールIDの問題
出力時にコンテンツページ内のIDが変わる。#grdList{}のようにスタイルを定義している場合に影響する。

ここも参考
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30306&forum=7
ベテラン
会議室デビュー日: 2006/11/10
投稿数: 64
投稿日時: 2006-11-10 22:34
べるさん、ありがとうございます。
CSSは適用されているので、問題ないと思います。

べるさんのところでは動作したということなので、
アドバイス通り、地道に出力されたHTMLの修正でがんばってみます。
1

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