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

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

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

asp:table に Colgroupを追加する方法

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

■86888 / inTopicNo.1)  asp:table に Colgroupを追加する方法
  
□投稿者/ 羽住 (1回)-(2018/04/02(Mon) 09:47:56)

分類:[ASP.NET (C#)] 

2018/04/02(Mon) 09:49:38 編集(投稿者)
2018/04/02(Mon) 09:49:34 編集(投稿者)

<asp:table id="tbl" runat="server"> を使用しリストを作成しています。

<colgroup> を使用し列単位でstyleを指定しようとしていますが
table へ追加する方法が分かりません。

どの様にすれば追加できるのかご存じの方いらっしゃいますでしょうか?


下記の方法ではできませんでした。

WebControl cg = new WebControl(HtmlTextWriterTag.Colgroup);
tbl.Controls.Add(cg);

環境
ASP.NET C#
.Net Framework 3.5

引用返信 編集キー/
■86891 / inTopicNo.2)  Re[1]: asp:table に Colgroupを追加する方法
□投稿者/ WebSurfer (1448回)-(2018/04/02(Mon) 11:54:36)
No86888 (羽住 さん) に返信

> 下記の方法ではできませんでした。

「できませんでした」だけでは何ができなかったのか分かりません。

〇〇〇とういう結果を期待したが、△△△という結果になって、□□□が期待と異なる・・・という
ように具体的に書いてください、

html ソースで説明してもらうと分かりやすいと思います。
引用返信 編集キー/
■86895 / inTopicNo.3)  Re[2]: asp:table に Colgroupを追加する方法
□投稿者/ 羽住 (2回)-(2018/04/02(Mon) 13:05:59)
> 下記の方法ではできませんでした。
>
> WebControl cg = new WebControl(HtmlTextWriterTag.Colgroup);
> tbl.Controls.Add(cg);

<table>に<colgroup>が追加されるかと思いましたが、
「'Table' に型 'WebControl' の子を指定することはできません。」
と実行時にエラーになってしまいました。(コンパイルは通ります)



今回記述したプログラム
WebControl cg = new WebControl(HtmlTextWriterTag.Colgroup);
tbl.Controls.Add(cg); ★ ここでエラーとなる。

TableRow row = new TableRow();
row.Cells.Add(new TableHeaderCell());
tbl.Rows.Add(row);

期待した結果
<table id="tbl">
<colgroup></colgroup>
<tr>
<th></th>
</tr>
</table>



asp:table は行を管理する Rows はありますが、
table の直下に <colgroup> を追加する方法が分かりません。


引用返信 編集キー/
■86899 / inTopicNo.4)  Re[3]: asp:table に Colgroupを追加する方法
□投稿者/ WebSurfer (1450回)-(2018/04/02(Mon) 14:54:05)
No86895 (羽住 さん) に返信

>>下記の方法ではできませんでした。
> >
>>WebControl cg = new WebControl(HtmlTextWriterTag.Colgroup);
>>tbl.Controls.Add(cg);
>
> <table>に<colgroup>が追加されるかと思いましたが、
> 「'Table' に型 'WebControl' の子を指定することはできません。」
> と実行時にエラーになってしまいました。(コンパイルは通ります)

自分も知らなかったのですが、MSDN ライブラリを調べてみると、Table.Controls プロパティで
取得できるのは Table.RowControlCollection オブジェクトで、それに追加できるのは TableRow
オブジェクトだけということです。

それゆえ上の結果「'Table' に型 'WebControl' の子を指定することはできません。」になった
ということのようです。

Table.RowControlCollection クラス
https://msdn.microsoft.com/ja-jp/library/windows/hardware/system.web.ui.webcontrols.table.rowcontrolcollection(v=vs.100).aspx/html

ウラワザ的なことまで考えたらわかりませんが、普通にやって Table コントロールに colgroup
要素を追加するのは無理そうなので、代案を考えた方がよいと思います。例えば、

(1) colgroup 要素を追加するのは諦めて、TableCell にスタイルを適用する。

(2) Table コントロールからレンダリングされる html 要素に jQuery 等を利用してスタイルを
  適用する。

(2) Table コントロールは諦めて、代わりに ListView を使う。

(3) カスタムコントロールを自作する。

引用返信 編集キー/
■86912 / inTopicNo.5)  Re[4]: asp:table に Colgroupを追加する方法
□投稿者/ 羽住 (3回)-(2018/04/03(Tue) 16:38:02)
回答ありがとうございます。

あれから自分でも探しましたが結局みつからず。

>自分も知らなかったのですが、MSDN ライブラリを調べてみると、Table.Controls プロパティで
>取得できるのは Table.RowControlCollection オブジェクトで、それに追加できるのは TableRow
>オブジェクトだけということです。

やはり、そうなんですね。
<colgroup>があるんだから、なにかしらの方法で追加できるんじゃないかと
思いましが残念です。


ありがとうございました。


ちなみに、「カスタムコントロールを自作する。」で対応したいと思います。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ