获取动态创建的文本框的值

时间:2013-05-28 09:19:52

标签: c# asp.net dynamically-generated servercontrols

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

1 个答案:

答案 0 :(得分:1)

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