C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ListView横スクロール時の列幅指定


(過去ログ 88 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■52586 / inTopicNo.1)  ListView横スクロール時の列幅指定
  
□投稿者/ まさひろ (17回)-(2010/08/16(Mon) 14:38:16)

分類:[ASP.NET (VB)] 

いつもお世話になります。まさひろです。

ASP.NET3.5(VWD2008)、ORACLE11で勉強をしています。
また分からないことがあり、ご教授頂きたく書き込ませていただきました。

LisstViewの横幅が長いので、横スクロールをつけたいと思い、いろいろ調べたところ
、divで
出来ることがわかりました。
しかし、やってみたところ、一覧表示時の削除ボタンと編集ボタンが2行で表示されて
しまいます。
なので、下記のように「style="width:200px」という風に指定しました。
<ItemTemplate>のほかにも、<EditItemTemplate>や<InsertItemTemplate>でも
すべて同じように指定しています。
しかし、サイズが反映されず2行になってしまいます。
指定の仕方がわるいのでしょうか?

<div style="height:500px; width:400px; overflow:auto;">

<asp:ListView ID="ListView1" runat="server" DataKeyNames="CategoryID"
DataSourceID="SqlDataSource1" InsertItemPosition="LastItem">
<ItemTemplate>
<tr style="">
<td style="width:200px;text-align:center;">
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="削除"
/>
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編集" />
</td>
<td>
<asp:Label ID="CategoryIDLabel" runat="server"
Text='<%# Eval("CategoryID") %>' />
</td>
<td>
<asp:Label ID="CategoryNameLabel" runat="server"
Text='<%# Eval("CategoryName") %>' />
</td>
<td>
<asp:Label ID="DescriptionLabel" runat="server"
Text='<%# Eval("Description") %>' />
</td>
<td>
<asp:Label ID="CategoryColorLabel" runat="server"
Text='<%# Eval("CategoryColor") %>' />
</td>
</tr>
</ItemTemplate>

引用返信 編集キー/
■52589 / inTopicNo.2)  Re[1]: ListView横スクロール時の列幅指定
□投稿者/ もりお (259回)-(2010/08/16(Mon) 23:30:06)
No52586 (まさひろ さん) に返信

> しかし、サイズが反映されず2行になってしまいます。
> 指定の仕方がわるいのでしょうか?

ListView では table を利用していらっしゃるのですか。
table のスタイルシートで table-layout:fixed と width を指定して
列の幅を指定するとよいかと思います。

列の幅を指定する方法としては col を記述したり table の最初の行の列の幅を指定したり
といったやり方があります。

引用返信 編集キー/
■52596 / inTopicNo.3)  Re[2]: ListView横スクロール時の列幅指定
□投稿者/ まさひろ (18回)-(2010/08/17(Tue) 11:23:10)
もりおさん、いつもいつもお世話になります。


> ListView では table を利用していらっしゃるのですか。
> table のスタイルシートで table-layout:fixed と width を指定して
> 列の幅を指定するとよいかと思います。

はい、tableを利用しています。
実際のテーブルの内容は以下になります。

<table style="table-layout:fixed;width:100%;">
<tr>
<td style="vertical-align:top;width:300px">
<table style="width:100%;">
<tr>
<td style="width:100px">
<asp:Label ID="lblYMD" runat="server" Text="日付"/>
</td>
<td style="width:200px">
<asp:TextBox ID="txtYMD" runat="server" MaxLength="10"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2" align="right">
<asp:Button ID="btnSerch" runat="server" Text="検索" />
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="vertical-align: top;">

<div style="height:550px; width:700px; overflow:auto; ">

<asp:ListView ID="ListView1" runat="server" InsertItemPosition="LastItem">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="CategoryIDLabel" runat="server"
Text='<%# Eval("CategoryID") %>' />
</td>
<td>
<asp:Label ID="CategoryNameLabel" runat="server"
Text='<%# Eval("CategoryName") %>' />
</td>
<td>
<asp:Label ID="DescriptionLabel" runat="server"
Text='<%# Eval("Description") %>' />
</td>
<td>
<asp:Label ID="CategoryColorLabel" runat="server"
Text='<%# Eval("CategoryColor") %>' />
</td>
</tr>
</ItemTemplate>


<--省略-->

</asp:ListView>
</div>
</td>
</tr>
</table>

>
> 列の幅を指定する方法としては col を記述したり table の最初の行の列の幅を指定したり
> といったやり方があります。
>

<col style="width:200;">と言う風に入れてみたのですが入れ方が悪いのか反映されませんでした。

colで記述との事ですが、
listviewの場合、<ItemTemplate>、<AlternatingItemTemplate>などにすべて
いれるということでしょうか?


引用返信 編集キー/
■52598 / inTopicNo.4)  Re[3]: ListView横スクロール時の列幅指定
□投稿者/ もりお (260回)-(2010/08/17(Tue) 13:06:12)
2010/08/17(Tue) 13:08:21 編集(投稿者)
No52596 (まさひろ さん) に返信

> <table style="table-layout:fixed;width:100%;">
>   <tr>
>     <td style="vertical-align:top;width:300px">
>       <table style="width:100%;">
>         <tr>
>           <td style="width:100px">
>             <asp:Label ID="lblYMD" runat="server" Text="日付"/>
>           </td>
> ...

table の中に table があって次の行に div、その配下に ListView、ということは
こんな構造でしょうか。

table
  table
  div
    ListView
    
ListView における列幅を指定するわけなので ListView でレンダリングされる table の
スタイルシートに table-layout:fixed を記述する必要があります。
おそらくは ListView の LayoutTemplate に <table ... の記述があるかと思います。
そこに table-layout:fixed を記述してみてください。

> <col style="width:200;">と言う風に入れてみたのですが入れ方が悪いのか反映されませんでした。

反映されないというのは col タグそのものが出力されないということでしょうか。
それとも col タグは出力されるけれども幅の指定が反映されないということでしょうか。

> colで記述との事ですが、
> listviewの場合、<ItemTemplate>、<AlternatingItemTemplate>などにすべて
> いれるということでしょうか?

LayoutTemplate に記述するとよいかと思います。

引用返信 編集キー/
■52599 / inTopicNo.5)  Re[4]: ListView横スクロール時の列幅指定
□投稿者/ まさひろ (19回)-(2010/08/17(Tue) 14:07:56)
もりおさん、ありがとうございます。

> table の中に table があって次の行に div、その配下に ListView、ということは
> こんな構造でしょうか。
>
> table
> table
> div
> ListView
>
> ListView における列幅を指定するわけなので ListView でレンダリングされる table の
> スタイルシートに table-layout:fixed を記述する必要があります。
> おそらくは ListView の LayoutTemplate に <table ... の記述があるかと思います。
> そこに table-layout:fixed を記述してみてください。
>
>><col style="width:200;">と言う風に入れてみたのですが入れ方が悪いのか反映されませんでした。
>
> 反映されないというのは col タグそのものが出力されないということでしょうか。
> それとも col タグは出力されるけれども幅の指定が反映されないということでしょうか。

col タグは出力されるけれども幅の指定が反映されないということです。
しかし、これは、<ItemTemplate>、<AlternatingItemTemplate>などに記述していたためです。


>
>>colで記述との事ですが、
>>listviewの場合、<ItemTemplate>、<AlternatingItemTemplate>などにすべて
>>いれるということでしょうか?
>
> LayoutTemplate に記述するとよいかと思います。

こちらに記述してみましたが、やはり幅は反映されません・・・・
記述の仕方が悪かったのでしょうか?


<LayoutTemplate>
<table runat="server" >
<tr runat="server">
<td runat="server">
<table ID="itemPlaceholderContainer" runat="server" border="0" style="table-layout:fixed;width:100%;">
<col width="100px">
<col width="200px">
<col width="300px">
<col width="200px">
<col width="200px">
<tr runat="server" style="">
<th runat="server">
</th>
<th runat="server">
CategoryID</th>
<th runat="server">
CategoryName</th>
<th runat="server">
Description</th>
<th runat="server">
CategoryColor</th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="">
<asp:DataPager ID="DataPager1" runat="server">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True"
ShowLastPageButton="True" />
</Fields>
</asp:DataPager>
</td>
</tr>
</table>
</LayoutTemplate>

引用返信 編集キー/
■52601 / inTopicNo.6)  Re[5]: ListView横スクロール時の列幅指定
□投稿者/ もりお (261回)-(2010/08/17(Tue) 15:21:32)
No52599 (まさひろ さん) に返信

> こちらに記述してみましたが、やはり幅は反映されません・・・・
> 記述の仕方が悪かったのでしょうか?

col の記述は問題ないように思います。
閉じタグがないのが気にはなりますが、それを以って col タグが反映されないとは考えにくい
です。

> <table ID="itemPlaceholderContainer" runat="server"

runat="server" となっているので table はサーバーコントロール HtmlTable コントロール
として認識されます。

HtmlTable クラス
http://msdn.microsoft.com/ja-jp/library/system.web.ui.htmlcontrols.htmltable.aspx

リンク先のメモの欄を見ていただくとわかるのですが、HtmlTable コントロールは col に対応
しておらず、col を出力しないという切ない事情があります。

table タグから runat="server" 属性を除去してみてはいかがでしょうか。

引用返信 編集キー/
■52602 / inTopicNo.7)  Re[6]: ListView横スクロール時の列幅指定
□投稿者/ まさひろ (20回)-(2010/08/17(Tue) 16:23:39)
もりおさん、いつもありがとうございます。

>
> HtmlTable クラス
> http://msdn.microsoft.com/ja-jp/library/system.web.ui.htmlcontrols.htmltable.aspx
>
> リンク先のメモの欄を見ていただくとわかるのですが、HtmlTable コントロールは col に対応
> しておらず、col を出力しないという切ない事情があります。
>
> table タグから runat="server" 属性を除去してみてはいかがでしょうか。
>

table タグから runat="server" 属性を除去したところ、指定した幅で表示されました!!
凄く苦労したので本当にうれしいです。

runat="server"っていままでどんな意味かも考えたことがありませんでした;
いろいろと教えていただいて、本当にありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -