- - PR -
ASP .NETでのTABLE
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-03-16 16:39
ASP .NETでプログラムでTABLEの行や列を作成する方法で
colspanは設定できないのでしょうか? | ||||
|
投稿日時: 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というプロパティがありますので、それを使って見てはどうでしょうか。 いや、試していないのでできるかは判りませんが、多分。 | ||||
|
投稿日時: 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 ] | ||||
|
投稿日時: 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); 分かりづらいかもしれませんが、ご伝授お願いいたします。 | ||||
|
投稿日時: 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 ] | ||||
|
投稿日時: 2004-03-17 08:33
.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"が必要です。 | ||||
|
投稿日時: 2004-03-17 09:33
ご回答ありがとうございます。
>べるさん IDとnameの事を間違ってました^^; ソースではID="Table1"と記述していました。 それと、また説明が足らなかったのかもしれません^^; 私が記述したソースは一応動くのですが、 このソースですとTableCellを使用しています。 しかし、TableCellクラスにはColSpanが存在していないようなので 思ったように動いてくれていません。 Tableの一番下以外の行は3列あるのに対して、 一番下の行は1列しか作成していません、この行をColSpanを使用して 1行全てに出力したいと思っています。 今回はWebControlなので一郎さんが答えてくれたAttributesを使用する方法が良いと思ったのですが、昨日の時点でAttributesがヘルプを見ても良く分からなかったのでスルーしてしまいました。今もっとよく読んでみたら意味がわかりました^^; 一番下の行を作成するところで c2.Attributes["ColSpan"] = "3"; と記述したらバッチリでした。 色々とわけ分からない質問ばかりしてすみませんでした。 これからもお世話になると思うので、もっと分かりやすく質問するように 心がけたいと思います。 ありがとうございました。 | ||||
|
投稿日時: 2004-03-17 10:09
RowSpanだけ見ていました。TableCellは、ColumnSpanでした。。。 |
1