ASP.NET C#.
UpdatePanel 内には、OnTextChanged="text_changed" メソッドと Panel を持つ TextBox があります。
数字 3 がテキストボックスに入力された場合、以下の 3 つのテキストボックスが異なる ID でパネル内に表示されます。
ただし、updatepanel の外側のボタンをクリックすると、動的に作成されたテキストボックスが見つからないというエラーが発生しました。
動的に作成されたテキストボックスの値を取得するには?
テキストボックスの作成:
protected void text_changed(Object sender, EventArgs e)
{
int n = Int32.Parse(TextBox6.Text);
Table table = new Table();
for (int i = 0; i < n; i++)
{
TableRow trow = new TableRow();
table.Rows.Add(trow);
TableCell tcell = new TableCell();
tcell.Text = (i + 1).ToString();
TextBox tb = new TextBox();
tb.ID = "TB" + i.ToString();
tcell.Controls.Add(tb);
trow.Cells.Add(tcell);
}
Panel1.Controls.Add(table);
ButtonClick //作成されたテキストボックスから値を取得: int n = Int32.Parse(TextBox6.Text);
for (int i = 0; i < n; i++)
{
string title = ((TextBox)UpdatePanel1.FindControl("Panel1").FindControl("TB" + i.ToString())).Text; //here null pointer exception..
}