質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

2回答

14516閲覧

ヘッダを固定したテーブルの各項目の横幅を画面に合わせて伸縮させたい

hoshx

総合スコア16

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/03/18 02:28

###前提・実現したいこと
asp.netのgridviewでヘッダ固定のスクロール可能なテーブルを作成しています。
このテーブルの幅を変化させたら、ヘッダと検索結果が同じ割合で伸縮するようにしたいのですが、上手くいきません。
Cssでthead,tbodyを固定してスクロール可能にしているのですが、そうするとヘッダの幅が固定されてしまい、伸縮できなくなっている気がします。

###発生している問題・エラーメッセージ
検索結果は伸縮しますが、ヘッダが固定化されているようで幅を伸縮させると、検索結果とヘッダの幅がずれてしまいます。

###ソースコード

CSS

1 .test thead{ 2 display:block; 3 } 4.test tbody{ 5 display:block; 6 overflow-y:scroll; 7 }

ASP.net

1 2<asp:GridView ID="grdVideo" 3 runat="server" 4 HtmlEncode="False" 5 OnRowDataBound="grdVideo_RowDataBound" 6 DataKeyNames="PlaylistID" 7 UseAccessibleHeader="true" 8 AllowSorting="false" 9 AutoGenerateColumns="false" 10 PageSize="1" 11 CssClass="tbl_list test" 12 height="100%" 13 width="98%" 14 BorderWidth="0" 15 CellPadding="0" 16 CellSpacing="0" 17 GridLines="None"> 18 <Columns> 19 <asp:BoundField HeaderText="<%$ Resources:Playlist.PlaylistID %>" 20 HtmlEncode="true" 21 DataField="PlaylistID" /> 22 <asp:BoundField HeaderText="<%$ Resources:Playlist.Name %>" 23 HtmlEncode="true" 24 DataField="PlaylistName" /> 25 </Columns> 26</asp:GridView> 27

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

(コメントだとコードの整形が使えないので別で回答します)

正しいのかどうか分からないのですが・・・ 試しに

★1 <asp:GridView ID="grdList" runat="server" HtmlEncode="False" _fixedhead="rows:1; cols:2; div-full-mode:yes;">

としてみたら、私の環境では以下のように出力されました。

★2 <div> <table cellspacing="0" rules="all" HtmlEncode="False" _fixedhead="rows:1; cols:2; div-full-mode:yes;" border="1" id="grdList" style="border-collapse:collapse;"> ...

ただ、最終的に以下のような形にしたいのですが

★3 <div style="overflow:auto;"> <table ... _fixedhead="rows:1; cols:2; div-full-mode:yes;"> ...

★2 を見ると、テーブルの外側に div がついていてこれが邪魔ですね・・・


以下のようにして、

★4 <div id="listContainer"> <asp:GridView ID="grdList" runat="server" HtmlEncode="False" _fixedhead="rows:1; cols:2; div-full-mode:yes;"> ...

画面表示時に

■ id="listContainer" 直下の div を取って overflow:hidden; を設定
■ その後 FixedMidashi.create();

としてみたところ ぬるっと動きましたが・・・ 微妙ですね・・・

(動きもなんか私の画面で使ってる感じと違う・・・スクロールした後、ワンテンポ遅れて固定ヘッダがぬるっと下がってくる感じ(IE))

お役に立てずすみません;;

投稿2016/03/23 02:46

編集2016/03/23 02:48
sk_3122

総合スコア1126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ちょっとずれますが・・・

私は「テーブルの行列を固定してスクロールさせる」のに
FixedMidashi という js ライブラリを使っています。

http://hp.vector.co.jp/authors/VA056612/fixed_midashi/manual/index.html

GridView に適用したことはないのですが・・・
最終的に普通の HTML の table として出力させるならいけるんじゃないかなと。どうかな。

デモページもあります。div-full-mode=yes で、ブラウザサイズに沿って伸び縮みします。
rowspan/colspan していても OK です。


↓ table の横幅が div より広い場合にぶにっと潰れてしまうので指定している css

■ table に table-layout:fixed を指定
■ 各セルに width, min-width を指定。

特別に書いてるのはこれだけかな・・・?
あとは FixedMidashi のサイトに書かれている設定を記述することで
私のところはこれでうまく動いています。参考までに。

投稿2016/03/18 02:50

sk_3122

総合スコア1126

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshx

2016/03/23 02:15 編集

ご回答ありがとうございます。こちらもためさせていただいてます。 ただ、asp.netのwebコントロールで生成されるtableタグに属性を追加するという方法がわからず、適用できずという状態です。 何かご存知であれば、アドバイスいただけませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問