- PR -

ASP .NETでのTABLE

1
投稿者投稿内容
PADROCK
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-16 16:39
ASP .NETでプログラムでTABLEの行や列を作成する方法で
colspanは設定できないのでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-16 17:23
>TABLEの行や列を作成する方法

といっても、どのように作成しているのか判らないのですが。

"<TABLE><TR>・・・"
というのをResponse.Write()でクライアントに出力しているわけではないですよね?
それならcolspanを書けるだろうし・・・

あるいはSystem.Web.UI.WebControls.Tableクラスを使ってTABLEを作っているのでしょうか?
それなら
TableのRowsプロパティで取得できるTableRowCollection型のオブジェクト
そのオブジェクトのItemプロパティで取得できるTableRow型のオブジェクト
そのオブジェクトのCellsプロパティで取得できるTableCellCollection型のオブジェクト
そのオブジェクトのItemプロパティで取得できるTableCell型のオブジェクト
そのオブジェクトのメンバにAttributesというプロパティがありますので、それを使って見てはどうでしょうか。

いや、試していないのでできるかは判りませんが、多分。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-16 17:27
 ちょっと階層が深くなりますが、

HtmlTable.Rows.Item(RowIndex).Cells(ColIndex)

でアクセスできる、HtmlTableCellクラスに、「ColSpan」と「RowSpan」プロパティがあります。


 あ、tableと聞いてHtmlTableと短絡しましたが、WebContolsにもTableクラスがありますね。同じく、TableCellクラスに(以下略)

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-16 17:30 ]
PADROCK
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-16 17:51
お早い回答ありがとうございます
説明がたら無すぎてすみませんでした。
Jittaさんの方法を試させて頂いたのですが、
TableのRowにAddするところでコンパイルエラーになってしまいました。

多分方法が悪いと思うので以下に私のプログラムを記述させていただきます。
WebFormのGUIでTableを配置して、それに対してサーバ側で列と行を追加しています。
以下にソースを記述させていただきます。
※TableのnameはTable1としています

int numrows = 3;
int numcells = 3;
for (int j=0; j<numrows; j++)
{
TableRow r = new TableRow();
for (int i=0; i<numcells; i++)
{
TableCell c = new TableCell();
Label lbl = new Label();

lbl.Text = "row " + j.ToString() + ", cell " + i.ToString();
c.Controls.Add(lbl);
c.BorderStyle = BorderStyle.Dashed;
c.BorderColor = Color.Black;
r.Cells.Add(c);
}
Table1.Rows.Add(r);
}

TableRow r2 = new TableRow();
TableCell c2 = new TableCell();

System.Web.UI.WebControls.Image box = new System.Web.UI.WebControls.Image();
box.ImageUrl = "images/aaa.gif";
c2.BorderStyle = BorderStyle.Dashed;
c2.BorderColor = Color.Black;
c2.Controls.Add(box);
r2.Cells.Add(c2);

Table1.Rows.Add(r2);

分かりづらいかもしれませんが、ご伝授お願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-03-16 18:16
私のところではTable1を貼って、PADROCKさんのソースをコピペしただけで
動きましたよ。

もしかしてTable1ってHtmlTableにしてませんか?HtmlTableにWebControlsの
TableRowはAddできないんですよ。WebControlsのTableを使わないと・・
何らかの理由でHtmlTableを使わなければならないならHtmlTableRowを作らないと
いけませんね。

#それかIDがTable1になっていないか、ですか。(そもそもnameって何だろう)

[ メッセージ編集済み 編集者: べる 編集日時 2004-03-16 18:20 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-17 08:33
引用:

べるさんの書き込み (2004-03-16 18:16) より:

#それかIDがTable1になっていないか、ですか。(そもそもnameって何だろう)


 .aspxのほうに、<table name="table1">とか?


PADROCKさん>
 もしこれなら、NGです。

 方法は2つあって、(確認していません)
<asp:table id="table1">するか、
<table id="table1" name="table1" runat="server">として、RowをHtmlTableRowにするか、

です。name属性は古いバージョンのものなので、古いユーザエージェントにも対応するなら(そしてJavaScriptなどで使用するなら)必要ですが、そうでないならid属性を使います。そして、ビハインドコードで使用するためには、runat="server"が必要です。
PADROCK
会議室デビュー日: 2004/03/15
投稿数: 13
投稿日時: 2004-03-17 09:33
ご回答ありがとうございます。

>べるさん
IDとnameの事を間違ってました^^;
ソースではID="Table1"と記述していました。

それと、また説明が足らなかったのかもしれません^^;
私が記述したソースは一応動くのですが、
このソースですとTableCellを使用しています。
しかし、TableCellクラスにはColSpanが存在していないようなので
思ったように動いてくれていません。
Tableの一番下以外の行は3列あるのに対して、
一番下の行は1列しか作成していません、この行をColSpanを使用して
1行全てに出力したいと思っています。

今回はWebControlなので一郎さんが答えてくれたAttributesを使用する方法が良いと思ったのですが、昨日の時点でAttributesがヘルプを見ても良く分からなかったのでスルーしてしまいました。今もっとよく読んでみたら意味がわかりました^^;
一番下の行を作成するところで
c2.Attributes["ColSpan"] = "3";
と記述したらバッチリでした。
色々とわけ分からない質問ばかりしてすみませんでした。
これからもお世話になると思うので、もっと分かりやすく質問するように
心がけたいと思います。
ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-17 10:09
引用:

PADROCKさんの書き込み (2004-03-17 09:33) より:

しかし、TableCellクラスにはColSpanが存在していないようなので
思ったように動いてくれていません。



 RowSpanだけ見ていました。TableCellは、ColumnSpanでした。。。
1

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