- - PR -
GridViewのヘッダーにCSSが適用できない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-04-03 11:06
ASP.NET 2.0 CSS Friendly + AJAX + VS2005
でWEBアプリを開発しております。 http://dobon.net/vb/bbs/log3-36/21712.html やりたいことは、GridViewのヘッダー行を固定して、スクロールするということでした http://www.friendlysw.com/aspnet/Articles/app/050929-1.aspx http://www.kametaro.dev-asp.net/(S(5ioic1550b114y45zh31o3v4))/P/39.aspx http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.useaccessibleheader(VS.80).aspx http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.gridview.rowheadercolumn(VS.80).aspx を参照に、GridViewのヘッダーにCSSのプロパティをいれて、 ヘッダーを固定しようとしましたが、ヘッダーがCSSを受け付けない状態になっていて、 コンテンツ部のスタイルが効いてしまっています。 タブコンテナ > パネル(スクロールバー) > GridView という構造です。 GridViewは SQLデータソース、または、Page_PreRendar にて、データバインドしております。 CSS .Freezing { z-index:10; top:expression(this.offsetParent.scrollTop); background-color: Black; } <ajaxToolkit:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0" AutoPostBack="True" ToolTip="並び替え可能" CssClass="ajax_xp_tab" TabIndex="1" > <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" > <ContentTemplate> <div id="Div2" style="height:280px;" class="Freezing" > <asp:Panel ID="GridPanel1" runat="server" Height="300px" ScrollBars="Vertical" > <%--DataSourceID="CONTRACTSQLDATASOUCE"--%> <asp:GridView ID="GridView1" runat="server" AllowSorting="True" Height="100px" Width="100px" OnRowCommand="GridView1_RowCommand" AutoGenerateColumns="False" DataKeyNames="no,id" ToolTip="並び替えができます。" EnableTheming="True" EnableViewState="False"> <Columns> <asp:ButtonField ButtonType="Image" CommandName="GetDetails" ImageUrl="~/images/Btn.jpg" Text="詳細表示"> <ControlStyle CssClass="GridStyle" /> <ItemStyle CssClass="GridStyle" /> <HeaderStyle CssClass="Freezing" /> </asp:ButtonField> この方法でもヘッダー固定まではいかないです、ヘッダーを表示できて、ソートもできるかが課題です……。 http://techbank.jp/Community/blogs/mymio/archive/2009/03/09/5326.aspx 前後のIframe の 編集のjavascriptで対応しても、どうしてもヘッダーが表示できません。 <script type="text/javascript"> window.onload = function() { var fr = document.createElement("iframe"); // var fr = document.getElementById("GridVIew1"); ← オブジェクトが取得できない為、断念 var fr = document.getElementById("Div2"); var tb = document.getElementById("Div2"); var dv = document.all("TabPanel1"); //var header = tb.rows(0); var w = tb.offsetWidth; var h = tb.offsetHeight; fr.style.width = w + "px"; // fr.style.height = h + "px" // fr.style.zIndex = 10; fr.style.position = "relative"; fr.style.top = -10; fr.style.left = -10; //fr.style.width = 980; fr.style.height = 50; fr.style.border = 0; fr.frameBorder = 0; fr.scrolling= "no"; fr.style.backgroundColor = "Red"; //tb.appendChild(fr); //tb.top = 0; fr.contentWindow.document.write("<body bgcolor='Transparent'></body>"); // fr.contentWindow.document.write("<body bgcolor='Transparent'></body>"); //このコメントを付けたりはずしたりして試せ。 //DIVGRIDVIEW.onscroll = function() { //fr.style.top = this.scrollTop + "px"; //window.status = this.scrollTop; //} } </script> おそらく、タブコンテナ内 の パネル内 の GridView のヘッダーにスタイルが適用できるようになれば、 ヘッダーを固定できるので、問題は解決すると思うのですが……… ASP.NET 2.0 CSS Friendly の場合 下記の方も、CSSがヘッダーに適用できずに回避策をうっているようなのですが…… http://blogs.wankuma.com/pinzolo/archive/2008/07/31/151248.aspx 標準モード、互換モード、両方で試しましたが、駄目でした ↓ マスターページ の下記の記述を消しても駄目。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> どなたかご教授いただけますと幸いです。 |
|
投稿日時: 2009-04-03 11:24
http://blog.asura.co.jp/takehara/5219ac5dcee34422a506ab9f3df120df/entry.aspx
この方法で実装した事があります。 その3まであるらしいです。 あと、近々引越しするみたいですよ。 どうしてもできないんだったらGridViewやめてRepeaterにするってのもあるかもしれません。 |
|
投稿日時: 2009-04-04 06:49
ASP.NET 2.0 CSS Friendlyを利用しないで
ListViewを使ったらどうでしょうか。 こんな感じです。 ライブデモ#1 http://asp35.com/samples/090217CS-5.aspx ライブデモ#2 http://asp35.com/samples/090217CS-4.aspx _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |
1