从之前手动创建的文本框数组调用文本框[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。我明白为什么会发生这种情况,但我不明白如何解决这个问题。

从之前手动创建的文本框数组调用文本框[i]

这是

预期行为。动态添加的控件在回发后丢失。通常,会将这些控件的信息保留在会话或视图状态中,并在回发后重新生成这些控件。Page_Load是重建它们的好地方。

您会发现许多有关如何保留控件及其数据的文章,只需使用 "asp.net dynamically added controls are lost at postback" 进行搜索即可。

下面是一个示例:如何在 asp.net 中保留动态创建的控件的值。下面是另一个示例:回复:回发后占位符中的动态控件丢失。

希望对您有所帮助!