点击添加按钮就向PlaceHolder里加一个textbox,每次点击后,似乎是上一次添加的textbox没了,只留下刚才添加上的的textbox。
求救!!!!!!!!!

解决方案 »

  1.   

    根我的问题差不多,
    不过我给了100分yeah,
    一个人都没回,郁闷
      

  2.   

    根我的问题差不多,
    不过我给了100分yeah,
    一个人都没回,郁闷http://community.csdn.net/Expert/topic/3719/3719504.xml?temp=.9457819
      

  3.   

    代码:
    protected System.Web.UI.WebControls.PlaceHolder plhOptions;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    ViewState["OptionCount"]=0;
    }
    }private void btnAdd_Click(object sender, System.EventArgs e)
    {
    int optionCount=Convert.ToInt32(ViewState["OptionCount"].ToString());
    optionCount++;
    ViewState["OptionCount"]=optionCount.ToString(); TextBox txtBox=new TextBox();
    txtBox.ID="txtOption"+optionCount.ToString();
    plhOptions.Controls.Add(txtBox);
    }
      

  4.   

    woolgate() ,怎么解决的?
    求各位高手来帮忙看看吧!
      

  5.   

    因为你向容器控件动态添加添加子控件时,容器控件都不会把它们放到viewstate里面的,因为这样,所以在页面经过一个提交的来回,容器控件中动态添加的子控件都会不见了的。
      

  6.   

    vilense(baoli) :
    那应该怎么做?请不吝赐教!!!
      

  7.   

    但是书上就是这么写的,当然,是vb.net的
      

  8.   

    PlaceHolder中增加的控件,每当往返一次服务端时,所有的东东都会消失,所以,只有最新创建的才有效,而其他是失效的.所以,你如果要增加多个控件,只能在一次往返中,一次性增加多个控件才行.
      

  9.   

    用viewstate做一个缓存的媒介,可以实现一次添加一个子控件的效果哦。
    可以这样做:在类里面定义一个ArrayList类型的childList对象,用它来保存动态添加的子控件列表。if(IsPsotBack){
    childList=(ArrayList)viewState["child"];//每次页面返回的时候就从viewstate里取回列表
    //把列表添加到容器控件,代码怎么写就要看你的容器控件咯。
    }在添加子控件的事件里面,每添加一个子控件就要向childList添加,而不需要添加到容器控件里面了。
    原理基本上是这样。因为时间关系还有很多细节没有考虑^_^