ASP.NET C#。
在UpdatePanel内部,我们有TextBox和OnTextChanged =“text_changed”方法和Panel。
如果在文本框中键入了数字3,则下面的3个文本框将显示在具有不同ID的Panel中。
但是,当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..
}
答案 0 :(得分:1)
你在哪里生成文本框?如果你在text_changed事件中创建它们,那么在下一篇文章中你将遇到页面生命周期问题。你需要缓存你创建它们的事实,并在页面的OnInit阶段重新创建它们。