从之前手动创建的文本框数组调用文本框[i]
本文关键字:文本 调用 数组 创建 | 更新日期: 2023-09-27 18:31:25
我的问题是:网络表单上有一个按钮。它创建 5 个文本框。然后,同一网络表单上还有另一个按钮。它从创建的文本框中获取值并制作一些东西:
protected void Page_Load(object sender, EventArgs e) { }
TextBox[] textbox;
protected void Button1_Click(object sender, EventArgs e)
{
textbox = new TextBox[5];
for (int i = 0; i < 5; i++)
{
textbox[i] = new TextBox();
textbox[i].ID = "textbox[" + i + "]";
PlaceHolder1.Controls.Add(textbox[i]);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
string str = "";
for (int i = 0; i < 5; i++)
{
str += textbox[i].Text;
}
Label1.Text = str;
}
错误在文本框 [i] 为空的Button2_Click。我明白为什么会发生这种情况,但我不明白如何解决这个问题。
这是
预期行为。动态添加的控件在回发后丢失。通常,会将这些控件的信息保留在会话或视图状态中,并在回发后重新生成这些控件。Page_Load是重建它们的好地方。
您会发现许多有关如何保留控件及其数据的文章,只需使用 "asp.net dynamically added controls are lost at postback"
进行搜索即可。
下面是一个示例:如何在 asp.net 中保留动态创建的控件的值。下面是另一个示例:回复:回发后占位符中的动态控件丢失。
希望对您有所帮助!