2009-07-28 66 views
2

我正在創建一個自定義.NET AJAX服務器控件,並且需要訪問與該控件相關的JavaScript對象功能。我可以通過使用$ find方法在ScriptManager中找到控件來做到這一點。不過,我需要確定何時可以調用$ find。如果我在HTML頁面正文的「onload」事件中執行此操作,它無法找到該控件。因此,我最終找到與每個事件我線了控制,我的代碼最終看起來像這樣:ASP.NET AJAX服務器控件 - 檢測控件的實例化

function button1_click() { 
    var control = $find("<%=Control.ClientID%>"); 
    control.DoSomething(); 
} 

function button2_click() { 
    var control = $find("<%=Control.ClientID%>"); 
    control.DoSomethingElse(); 
} 

我寧願存儲控制一次,並用它貫穿於我的事件調用休息。因此,我希望代碼最終看起來像這樣:

var _control = null; 
function load() { 
    _control = $find("<%=Control.ClientID%>"); 
} 

function button1_click() {  
    _control.DoSomething(); 
} 

function button2_click() { 
    _control.DoSomethingElse(); 
} 

讓我知道這是否沒有道理。我是創建這些自定義控件的新手,所以我對這個術語還不太確定。謝謝你的幫助!

回答

1

「load」DOM事件發生在ASP.NET Ajax客戶端框架初始化之前。通過處理Sys.Application對象的init事件來初始化客戶端控件。這就是爲什麼一個ASP.NET AJAX控件的初始化腳本輸出,如:

Sys.Application.add_init(function() { 
    $create(...) 
}); 

您可以使用load事件Sys.Application對象或其shortcut-的pageLoad方法。它發生在init事件之後,並且所有ASP.NET Ajax控件都將被初始化。以下是一些示例代碼:

var _control = null; 

function pageLoad() { 
    _control = $find("<%= Control1.ClientID %>"); 
} 
+0

這正是我所需要的。非常感謝您的幫助! – 2009-07-29 14:48:22