按钮onclick问题与占位符

时间:2011-07-04 12:54:41

标签: c# .net asp.net events

我想做动态控件生成,我设法将控件放在占位符上。当我试图从控件中获取信息时,我得到的问题,因为它不会“看到”处理程序中的控件。

即。
在test.aspx中  <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>     

在页面后面的代码中

protected void Page_Load(object sender, EventArgs e){
TextBox txt = new TextBox();
Button btn = new Button();
btn.OnClientClick = "button_click";
//btn.Attributes.Add("onClick","button_click"); I tried this way , yet didn't work 
btn.Attributes.Add("runat","server");
PlaceHolder1.Controls.Add(txt);
PlaceHolder1.Controls.Add(btn);}

并且处理程序是:

protected void button_click(Object sender , EventArgs args){
string str = txt.Text; // I don't know if this would work , cuz this method didn't run onclick
 PlaceHolder2.Controls.Add(new LiteralControl("intered :"+str));
}

非常感谢每个答案,
至于访问控件TextBox tmp = (TextBox)PlaceHolder1.FindControl("input"); 其中“输入”是我设置的文本框ID

3 个答案:

答案 0 :(得分:2)

您正在以错误的方式添加活动。

应该是这样,因为您要添加服务器端事件:

btn.Click += new EventHandler(button_click);

相反btn.OnClientClick = "button_click";这是我们通常添加JavaScript函数的方式。

答案 1 :(得分:1)

OnClientClick是指JavaScript,用于在客户端执行JavaScript函数。如果您想使用Click事件,请为其指定一个事件处理程序,如下所示:

btn.Click += myHandler;

myHandler具有以下方法签名:

protected void myHandler(object sender, EvetArgs e)

答案 2 :(得分:1)

btn.Click += new EventHandler(button_click);

这是你正在寻找的代码


至于

btn.OnClientClick = "button_click"; //btn.Attributes.Add("onClick","button_click")

用于客户端脚本