唉,弄这么晚,头都晕了.发现一个问题.页面上只有一个按钮Button1        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />后台代码
Page_Load事件protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Table tb = new Table();                int row = 2;    // 行数
                int col = 2;    // 列数
                for (int i = 0; i < row; i++)
                {
                    TableRow tr = new TableRow();
                    tb.Rows.Add(tr);                    for (int j = 0; j < col; j++)
                    {
                        TableCell td = new TableCell();
                        tr.Cells.Add(td);
                        if(j==0)
                        td.Text = "第"+i.ToString()+"行";
                        if (j == 1)
                        {
                            TextBox txt = new TextBox();
                            txt.Width = 50;
                            txt.Text = i.ToString();
                            td.Controls.Add(txt);
                        }
                    }
                }
                form1.Controls.Add(tb);
            }
        }
页面打开生成一个两行两列表格,然后第二列是textbox,分别显示数字0,1现在的问题是,比如我在第二列textbox里输入其它值,点击Button1,如何在后台获得新输入的值?谢谢!

解决方案 »

  1.   

    动态添加的控件,必须在 if (IsPostBack == true)的时候再次动态添加一次,否则这个文本框会消失。而你只在 if (!IsPostBack) 的时候动态添加,这个是不行的。如果是自定义服务器控件的话,还要实现一个标记接口,看你的代码好像不是服务器控件。
      

  2.   

    可以参考我发布贴子,里面有介绍如何动态生成text
    http://topic.csdn.net/u/20110228/09/372ea073-ca71-4d68-b4a4-5e4aa3d148e1.html
      

  3.   

    动态添加
    protected void Page_Load(object sender, EventArgs e)
      {
      object count = ViewState["count"] ?? "0";
      int index;
      int.TryParse(count.ToString(), out index);
      TextBox txt;
      LiteralControl litc;
      for (int i = 0; i < index; i++)
      {
      txt = new TextBox();
      txt.ID = string.Format("txt{0}", i);
      txt.Text = (i + 1).ToString();
      ph.Controls.Add(txt);
      litc = new LiteralControl("<br />");
      ph.Controls.Add(litc);
      }  }
      protected void lbtnAdd_Click(object sender, EventArgs e)
      {
      object count = ViewState["count"] ?? "0";
      int index;
      int.TryParse(count.ToString(), out index);
      TextBox txt = new TextBox();
      txt.ID = string.Format("txt{0}", index);
      txt.Text = (index + 1).ToString();
      ph.Controls.Add(txt);
      ViewState["count"] = index + 1;
      }
      

  4.   

    用FindControl(id),强制转换成textbox.