动态服务器控件如何传值
如题:
在PageLoad页面生成的服务器控件,有button,也有textbox。按钮点击时如何将自己写的事件处理程序得到textbox中的值?
Button myBtn = new Button();
TextBox myTextbox=new TextBox ();
myBtn.Click += new EventHandler(myBtn_Click);
然后:
private void myBtn_Click(object sender, System.EventArgs e)
{
//如何得到我自己生成的myTextBox中的数据??
}
[解决办法]
将值存放在VIEWSTATE中或SESSION中
[解决办法]
aspx:加上
<input type= "hidden " id= "hdnMyTextBox " runat= "server " value= " " />
cs:
myBtn.Attribute.Add( "onclick ", "document.getElementById( 'hdnMyTextBox ').value=document.getElementById( ' "+myTextbox.ClientID+ " ').value;return true; ");
private void myBtn_Click(object sender, System.EventArgs e)
{
string data = hdnMyTextBox.Value;
}
[解决办法]
对于动态添加的服务器控件来说,必须每次在page load里面把这个button创建出来,事件才会执行
[解决办法]
控件的事件在pageload的时候就会去初始化里去找 没有就没有~~~所以你要动态的话就要保存这个状态 用viewstate
[解决办法]
Button myBtn = new Button();
myBtn.ID = " ";
?is this ok
[解决办法]
动态创建的控件,在每次post后都需要加载,这个时候里面存在的值就会消失
[解决办法]
TextBox myTextbox=new TextBox ();
myTextbox.ID = "textbox1 ";
......
private void myBtn_Click(object sender, System.EventArgs e)
{
string text = ((TextBox)this.FindControl( "textbox1 ")).Text;
}
[解决办法]
楼上的想法不错,动态地创建Button后,利用个ID值来进行控件的识别!!不过得想到的是回传页面后动态控件的重新生成!
[解决办法]
private void Page_Load(object sender, System.EventArgs e)
{
Button bt = new Button();
bt.ID = "btn ";
bt.Click +=new EventHandler(bt_Click);
TextBox tb = new TextBox();
tb.ID = "txt ";
this.Panel1.Controls.Add(bt);
this.Panel1.Controls.Add(tb);
}
private void bt_Click(object sender, EventArgs e)
{
this.Label1.Text = ((TextBox)this.FindControl( "txt ")).Text ;
}
请教楼上的-“不过得想到的是回传页面后动态控件的重新生成”,我的程序的问题出在哪???
[解决办法]
Button myBtn = new Button();
TextBox myTextbox=new TextBox ();
先加到 Panel 里面后在加事件
myBtn.Click += new EventHandler(myBtn_Click);
取值
((TextBox)Panel1.Controls.FindControl( "Txt1 ")).Text
[解决办法]
请教楼上的-“不过得想到的是回传页面后动态控件的重新生成”,我的程序的问题出在哪???
----------
问题出在页面重新加载之后又重新创建了
[解决办法]
无语 现在都不知道LZ到底是需要重新创建还是不要了