如何在C#上创建ImageButton时向其添加事件?

如何在C#上创建ImageButton时向其添加事件?,c#,asp.net,C#,Asp.net,我正在尝试生成一个表,每行上都有一个ImageButton 行取决于我从日历对象进行的查询的类型 我的问题是,当我生成imagebutton时,我无法设置“onClick”事件以在类内激发方法 这是我的代码: ImageButton test = new ImageButton(); test.Click += new ImageClickEventHandler(borraCita); test.ImageUrl = "~/Images/jumo.png"; test.Attributes.A

我正在尝试生成一个表,每行上都有一个ImageButton

行取决于我从日历对象进行的查询的类型

我的问题是,当我生成imagebutton时,我无法设置“onClick”事件以在类内激发方法

这是我的代码:

ImageButton test = new ImageButton();
test.Click += new ImageClickEventHandler(borraCita);
test.ImageUrl = "~/Images/jumo.png";
test.Attributes.Add("runat", "server");

再次感谢:)

我不明白这为什么行不通。你把它添加到页面了吗

this.form1.Controls.Add(test);
另外,您是否看到任何JS错误?你用Firebug评估过吗?我们可能需要更多的代码来帮助您,因为我看不出有什么理由不起作用


您是在页面的代码隐藏的PreInit方法中这样做的吗?如果没有,您可能希望将逻辑放在那里,因为在此之后的任何动态内容都将被忽略。

您的服务器端单击处理程序已使用事件设置为
borraCita
。另外,您不需要为
runat=server
添加属性

ImageButton test = new ImageButton();
// this is your server side click handler:
test.Click += new ImageClickEventHandler(borraCita); 
test.ImageUrl = "~/Images/jumo.png";

// add the image to the appropriate control:
someControl.Controls.Add(test);
如果需要添加客户端事件处理程序,可以使用:


一排什么?如果您使用的是GridView,您最好在那里定义按钮(在标记中),因为您可以轻松地在那里分配事件。您不必在标记中设置
OnClick
,因为您已经在代码中使用
Click
添加处理程序。此外,您不必在代码中添加
runat=server
,这是自动完成的。实际上,在PreInit之后,所有内容都将被忽略。Page_Init是在asp.net pages生命周期中从codebehing添加动态控件的最后一个位置;)您也可以这样编写
this.Controls.Add(test)与@Tony write的意思相同
test.OnClientClick= "someJavascriptFunction();";