如我使用循环动态创建了N个textbox控件,然后让用户输入信息,使用代码如下for(int n=0;n<5;n++)
{
    TextBox a= new TextBox();
    TextBox b= new TextBox();
    a.Width=130;
    b.Text=no2.Text;
    b.Width=50;
    Panel1.Controls.Add(a);
    Panel1.Controls.Add(b);
}以上代码可以显示出5个textbox控件,但当输入相关数据后,我如何分别读出这5个textbox里的内容呢?

解决方案 »

  1.   

    遍历textbox.item,用for each i in textbox.item ... i.text ... next,思路肯定是这样的了,具体写法得试试。
      

  2.   

    Text a = new TextBox();
    a.ID = "tb1";  //加一句访问代码:
    string str=tb1.Text;
      

  3.   

    其实你看看访问时的html代码,应该能看到自动生成的id的,后台直接访问。
      

  4.   

    遍历panel控件,找出textbox的,取得数据
      

  5.   

    Dim DDL As New DropDownListPlaceHolder1.Controls.Clear()
            PlaceHolder1.Controls.Add(DDL)
            DDL.ID = "ParentID"
            DDL.Width = Unit.Pixel(300)        Dim TmpItem As New ListItem
            TmpItem.Value = 0
            TmpItem.Text = "选择栏目所属"
            TmpItem.Selected = True
            UID.Items.Insert(0, TmpItem)
    DDL.SelectedValue
      

  6.   

    觉得ChengKing(bantamweight)说的可行
      

  7.   

    现在还有个问题就是,我这个是动态创建的控件,因此没有事先定义,在提交时是调用另一个功能函数的,调用时就不能直接使用这些动态控件的ID,编译时会说此变量没定义如我的动态控件是放在 public void set{} 这里的但用户输入数据提交处理的是在 public void add{},这里不能直接调用set里的变量,这个要如何解决呢?
      

  8.   

    呵呵。相比较winform而言,webForm比较原始,所有可以有很多种方法实现同一功能。只不过区别是有些是根据原理直接和可靠地(局部修改不会影响其他地方)实现,有些是寻找特例恰好实现,做多了才会选择可靠的方法。如果搂主不是上面跟着问了新问题,我就不打算回答开始的问题了。ArrayList TextBoxArray;
    for(int n=0;n<5;n++)
    {
        TextBox a= new TextBox();
        TextBoxArray.Add(a);
        TextBoxArray.Add(b);
        TextBox b= new TextBox();
        a.Width=130;
        b.Text=no2.Text;
        b.Width=50;
        Panel1.Controls.Add(a);
        Panel1.Controls.Add(b);
    }
    之后,你在任何地方、任何事件中都可以通过 TextBoxArray 访问到每一个 textbox,包括可以获得客户端提交的值,不需要使用 ID 去费力地查找。
      

  9.   

    sorry,把 TextBoxArray.Add(b); 向下移动一行。
      

  10.   

    ChengKing(bantamweight) 说的不可行。因为 tbl没有声明,即使声明了也没有实例化,而实例化需要findControl,但是要到哪个对象上去findControl很重要,选错了一样无法实例化。
      

  11.   

    你创建了10个textbox,后边就直接使用它们,不要通过id去找,因为通过id去找那么每当textbox放入其他控件之内的时候原来的findControl肯定出错,需要记得一个个改为新的控件,多了可能出错的环节,不符合我说的追求“直接、可靠地解决问题”的想法。
      

  12.   

    先感谢大家的帮助,不过我用了sp1234的方法后,还是解决不了,理论上来说应该是没问题的,但我就是不明白为什么数据总是传不出来,我用了数组并定义为公共的数组,但最后提交时,这个数组里的内容还是空的,我现已把提交函数里简化为只有一句:Content.Text=list.Count.ToString();显示出来的结果还是0啊,就是这个数组里根本还没有数据,唉!
      

  13.   

    唉,我终于把问题解决了,原来动态添加的控件,还要在每次页面读取时重新生成一次,这样就可以使用了,只要利用ViewState["textboxcreate"] = true来判断就可以了!
      

  14.   

    唉,我终于把问题解决了,原来动态添加的控件,只要把控件加到page_load里,再在设定的BUTTON里把需要显示的panle控件设定为可视,这样就可以啦,弄得我想了这么久,唉,不过同时还是谢谢大家的回答