2010-04-06 75 views
0

我正在构建一个实现了IScriptControl的ASP.net自定义控件。我希望我的控件的其他用户能够将控件分配给客户端事件处理程序。不幸的是,由IScriptControl生成的JS总是被注入到呈现页面的底部(见下文),因此任何尝试在ASPX页面中分配事件处理程序都会失败,因为代码执行得太早。在运行时向ASP.Net自定义控件添加客户端事件

... 
<script type="text/javascript"> 
//<![CDATA[ 
Sys.Application.initialize(); 
Sys.Application.add_init(function() { 
    $create(MyNamespace.MyControl, {}, null, null, $get("my_control_id")); 
}); 
//]]> 
</script> 
</form> 

在页面加载时,将事件处理程序分配给实例化控件的正确方法是什么?

回答

2

检查此

Sys.Application.add_load(handler); 
+0

这样做! w00t。 – 2010-04-06 18:28:20

0

事实上,他们会使用可以添加使用任何JavaScript库的的事件处理程序,如jQuery:

$(document).ready(function(){ 

$('#<%= my_control_id.ClientId%>').click(function(e){ 
    // do something... 
}); 

}); 

HTH。

+0

这是一个复杂的小定制控制,并且待处理的事件不对应于一个事件的任何特定的DOM元素。该处理程序必须应用于在IScriptControl生成的代码中创建的对象。不幸的是,任何其他脚本块执行后的对象。 – 2010-04-06 18:21:40