2010-04-06 38 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