积极答复者
动态创建控件

问题
-
我点击一个按钮页面会增加一个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); }
答案
-
你好,
因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。
- 已标记为答案 Song TianModerator 2011年11月21日 9:33
-
你好,
因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。
补充说明:如果点击Submit按钮,因为还要Page_Load恐怕还是会控件消失。我的意见是:把动态添加的控件放到List<Control>中(动态添加到该实例中),然后Page_Load只负责把这个List绑定到Repeater或者使用foreach+this.Control.Add(每一个控件);
注意:每次添加以后必须把该List存放到ViewState中,这样便与处理回发事件的问题,因为Html是无记忆的。
QQ我:
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处- 已标记为答案 Song TianModerator 2011年11月21日 9:33
全部回复
-
你好,
因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。
- 已标记为答案 Song TianModerator 2011年11月21日 9:33
-
你好,
因为你点击一个按钮后会进行一个postback,所以之前你动态创建的就被清空了, 你如果想不清空必须把创建的动作放到Page_Load()里面。
补充说明:如果点击Submit按钮,因为还要Page_Load恐怕还是会控件消失。我的意见是:把动态添加的控件放到List<Control>中(动态添加到该实例中),然后Page_Load只负责把这个List绑定到Repeater或者使用foreach+this.Control.Add(每一个控件);
注意:每次添加以后必须把该List存放到ViewState中,这样便与处理回发事件的问题,因为Html是无记忆的。
QQ我:
下载MSDN桌面工具(Vista,Win7)
我的博客园
慈善点击,点击此处- 已标记为答案 Song TianModerator 2011年11月21日 9:33