##はじめに
aspxファイルで直接Tableコントロールを用いてテーブルを作成するのでなく......
例えばデータベースから抽出したデータをバックエンドでテーブルを作成して表示させたい場合も
出てくるだろう。
今回は動的にテーブルを作成する方法を備忘録に記しておく。
##早速作成方法
####各コントロールの初期化方法
今回はセルの中にテキストボックスを入れてそこにテキストを入れて表示することにする。
//テーブルの作成
Table tb = new Table();
//行の作成
TableRow tbrow = new TableRow();
//セルの作成
TableCell tbCell = new TableCell();
//テキストボックスの作成
TextBox tbtextBox = new TextBox();
###データの挿入方法
//セル内を編集可能にするにはテキストボックスのTextにデータを入れる
tbtextBox.Text = "テキストボックス内のテキスト";
tbcell.controls.Add(tbtextBox); //セルにテキストボックスをセット
tbrow.Cells.Add(tbcell); //行にセルをセット
tb.Add(row); //テーブルに行をセット
###セルの値を取得
ここで大きく躓いた。セルの中のテキストボックスのテキストを取得するにはセルを参照しても値は取得できない。
セルの中のコントロールまでしっかりと参照してからテキストの取得だ。
tb.Rows[index].Cells[index].Text //セルに直接かかれたテキストの取得
((TextBox)tb.Rows[index].Cells[index].Controls[0]).Text //セルのテキストボックスのテキストの取得
そして。また躓くポイントが。WebFormは毎回表示しているPageは別のもの。
つまり動的に作成したコントロールはPage_Loadで再度コントロールを作成する必要がある。
これをしないとセルの値を取得することが出来ない。
以上。あとはfor文なりforeachなどで繰り返し処理して動的にテーブルが作成できそうだ。