none
动态创建控件 RRS feed

  • 问题

  •  我点击一个按钮页面会增加一个textBox,但是第二次增加的时候把第一个生产的清掉.这种情况需要如何处理!
            protected void btnText_Click(object sender, EventArgs e)
            {
                Panel pen = new Panel();//内部div
                pen.ID = Creatnumberid();
                pen.Attributes.Add("onmousedown", "startDrag(this)");
                pen.Attributes.Add("onmouseup", "stopDrag(this)");
                pen.Attributes.Add("onmousemove", "drag(this)");
                TextBox tb = new TextBox();
                tb.Text = "text";
                tb.ID = Creatnumberid();
                pen.Controls.Add(tb);
                //string div="<div id='"+Creatnumberid()+"' onmousedown='startDrag(this)' onmouseup='stopDrag(this)' onmousemove='drag(this)' runat='server'><input id='"+Creatnumberid()+"' type='text' runat='server' value='aa'/></div>";
    
                Panel pan = new Panel();//外部div
                pan.ID = Creatnumberid();
                pan.Style.Value = "z-index:100; left: 200px; position: absolute; top:227px";
                pan.Controls.Add(pen);
                this.Controls.Add(pan);
            }
    

    2011年11月15日 2:05

答案

  • 你好,

    因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。

    2011年11月16日 6:28
    版主
  • 你好,

    因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。


    补充说明:如果点击Submit按钮,因为还要Page_Load恐怕还是会控件消失。我的意见是:

    把动态添加的控件放到List<Control>中(动态添加到该实例中),然后Page_Load只负责把这个List绑定到Repeater或者使用foreach+this.Control.Add(每一个控件);

    注意:每次添加以后必须把该List存放到ViewState中,这样便与处理回发事件的问题,因为Html是无记忆的。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月16日 7:51

全部回复

  • 你好,

    因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。

    2011年11月16日 6:28
    版主
  • 你好,

    因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。


    补充说明:如果点击Submit按钮,因为还要Page_Load恐怕还是会控件消失。我的意见是:

    把动态添加的控件放到List<Control>中(动态添加到该实例中),然后Page_Load只负责把这个List绑定到Repeater或者使用foreach+this.Control.Add(每一个控件);

    注意:每次添加以后必须把该List存放到ViewState中,这样便与处理回发事件的问题,因为Html是无记忆的。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月16日 7:51