DOBON.NET DOBON.NETプログラミング掲示板過去ログ

動的作成したテーブルが消えてしまう

環境/言語:[VB.NET]
分類:[.NET]

VB.NETでWebアプリを作っています。

動的に作成されたテーブルの行ごとにチェックボックスを置いて
クライアント側でチェックをつけたりはずしたりした結果を、
ボタン押下時にサーバ側で拾おうと思っているのですが、
なぜかうまくいきません。

Page_Loadでテーブルを動的に作成しています。
動的といっても、aspx上にヘッダ部だけ固定で作っておき、
その下にAddする感じです。

実行すると、Web画面上にテーブルも表示され、
チェックボックスもオンオフが可能ですが、
ボタンを押してServerClickのハンドラ上でテーブルを参照したときには、
rowsが1(元のヘッダのみ)となってしまいます。

Page_Loadを抜けたときにクリアされてる感じです。

原因として考えられることを、教えていただけると助かります。

よろしくお願いします。


.aspxでのテーブルヘッダ部

<P align="center">
<TABLE id="TblList1" style="WIDTH: 77px; HEIGHT: 26px" cellSpacing="1" cellPadding="1" width="77" border="1" runat="server">
<TR>
<TH style="HEIGHT: 4px" align="center" bgColor="silver">
チェック</TH></TR>
</TABLE>
</P>


テーブル作成の部分抜粋

Me.TblList1.Height = 10 * MyDataTable.Rows.Count + 10

Dim myRow As DataRow
Dim MyTableRow As HtmlTableRow
Dim MyTableCell As HtmlTableCell

Dim intI As Integer = 1
For Each myRow In MyDataTable.Rows

MyTableRow = New HtmlTableRow

Dim ChkBox1 As New System.Web.UI.HtmlControls.HtmlInputCheckBox
Dim strCheck As String = myRow.Item("CHECK")
ChkBox1.Checked = (strCheck.Substring(0, 1) = "1")
MyTableCell = New HtmlTableCell
MyTableCell.Controls.Add(ChkBox1)
MyTableCell.Align = "center"
MyTableRow.Cells.Add(MyTableCell)

Me.TblList1.Rows.Add(MyTableRow)

Next myRow
Page_Loadでポストバック時にもテーブルを動的に作成しにいっているのではないでしょうか? そして、その時には何らかの原因でデータが読めなくなっているのかもしれません。Page.IsPostBackでポストバック時かそうでないかの判断ができます。
返信ありがとうございます。
テーブルを作成しているのはPage_LoadでNot IsPostBack()のときのみです。
submitすればページ情報がすべて返るものと思っているのですが、
サーバに返せるのは<INPUT>系だけなのでしょうか?
自己解決しました。
動的に作成したコントロールは、PostBackしたときにも書いてあげないと、
クライアントから返ってきた情報を反映できないということでした。

お騒がせしました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板