日期:2014-05-19  浏览次数:20471 次

动态服务器控件如何传值
如题:
    在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到底是需要重新创建还是不要了