0

ASP.NET C#。

在 UpdatePanel 中,我们有带有 OnTextChanged="text_changed" 方法和面板的 TextBox。

如果在文本框中输入数字 3,则下面的 3 个文本框将出现在 Panel 中,具有不同的 ID。

但是,当点击更新面板外的按钮时,会发生动态创建的文本框未找到错误。

如何获取动态创建的文本框的值?

创建文本框:

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..            
        }
4

1 回答 1

1

你在哪里生成你的文本框?如果您在 text_changed 事件中创建它们,那么在下一篇文章中您将遇到页面生命周期问题。您需要缓存您创建它们的事实,并在页面的 OnInit 阶段重新创建它们。

于 2013-05-28T09:30:14.950 回答