如何在C#上创建时将事件添加到ImageButton?

问题描述:

我想在每一行上生成一个ImageButton表。如何在C#上创建时将事件添加到ImageButton?

行取决于我从日历对象所做的查询。

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

这是我的代码:

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

再次感谢:)

+0

行的是什么?如果您使用的是GridView,最好在那里定义按钮(在标记中),因为您可以轻松地将事件分配到那里。 – Rich

+0

我正在使用表格 – rafuru

+0

您不必在标记中设置“OnClick”,因为您已经使用'Click'在代码中添加了一个处理程序。 – jrummell

我不明白为什么这是行不通的。你有没有把它添加到页面?

this.form1.Controls.Add(test); 

此外,你是否看到任何JS错误?你用Firebug评估过吗?我们可能需要更多的代码来帮助你,因为我没有理由不这么做。

你是否在页面的代码隐藏的PreInit方法中执行此操作?如果不是的话,你可能想把逻辑放在那里,因为之后的任何动态都将被忽略。

+0

PreInit之后的所有内容都将被忽略 Page_Init是您可以在asp.net页面生命周期中从codebehing添加动态控件的最后一个地方;) 您也可以这样写 'this.Controls.Add(test) ;'这意味着像@托尼一样写 – harry180

+0

doh良好的呼叫:) – Tony

您的服务器端单击处理程序已使用Click事件设置为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); 

如果您需要添加客户端事件处理程序,您可以使用OnClientClick

test.OnClientClick= "someJavascriptFunction();";