【发布时间】:2012-04-04 00:25:55
【问题描述】:
我想在表格中添加一些动态文本框并让它们触发事件。 我在创建文本框或访问有关它们的信息时没有问题,但它们不想触发事件。
List<string> txtNames = new List<string>();
txtNames.Add("txtId");
txtNames.Add("txtName");
txtNames.Add("txtQty");
txtNames.Add("txtUnitPrice");
txtNames.Add("txtExtendedPrice");
Panel1.Controls.Add(new LiteralControl("\t<tr>\n"));
TextBox txt;
foreach (string s in txtNames)
{
txt = new TextBox();
txt.CopyBaseAttributes(Textbox1);
txt.Text = "";
txt.BorderWidth = 0;
txt.ID = s + row;
Panel1.Controls.Add(new LiteralControl("\t\t<td>"));
Panel1.Controls.Add(txt);
Panel1.Controls.Add(new LiteralControl("</td>\n"));
txt.AutoPostBack = true;
txt.TextChanged += new EventHandler(txt_TextChanged);
txt.Text = s;
count++;
}
Panel1.Controls.Add(new LiteralControl("\t</tr>\n"));
row++;
(面板在 html 表格中)
此代码在一个函数中,当页面未回发或单击按钮添加一行文本框时调用。
文本框保存到会话中,然后在 page_load 上重新加载。
我尝试制作一个不是在 for 循环中创建的测试文本框,并且该文本框确实触发了文本更改事件。
编辑: 从保存的会话中加载文本框时,我尝试重新添加文本更改事件,现在它们正在触发该功能。
【问题讨论】:
-
上面的代码在哪里? Page_Load?
-
它在一个函数中,当页面没有回发,或者当我点击一个按钮添加另一行文本框时调用。
-
是否也保存并重新创建了有效的测试文本框?
-
没有在每次页面加载事件中创建。
标签: c# asp.net events dynamic textbox