2015-09-16 40 views
0

我有一個奇怪的問題,我無法理解它發生的原因。

在同一個* .ascx文件中,我聲明瞭Telerik:RadWindowManager控件,然後我調用$find()來查找RadWindowManager。但是,該方法始終返回空值。

下面是代碼(包括在同一*的.ascx):

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<script type="text/javascript"> 
function init(){ 
    GetRWndManager(); 
} 

function GetRWndManager() { 
    return $find("<%=rwndManager.ClientID%>"); //return null at this step 
} 

</script> 
<telerik:RadWindowManager ID="rwndManager" runat="server" ShowContentDuringLoad="False" VisibleOnPageLoad="False" EnableShadow="true"> 
</telerik:RadWindowManager> 

回答

0

確保您調用init()函數(實際上是GetRWndManager()函數)的Sys.Application.Load事件後,因爲在此之前可能不會創建IScriptControl客戶端對象:http://msdn.microsoft.com/en-us/library/bb383829.aspx

下面是一個例子:

function init() { 
    GetRWndManager(); 
    Sys.Application.remove_load(init); 
} 
Sys.Application.add_load(init); 

function GetRWndManager() { 
    return $find("<%=rwndManager.ClientID%>"); 
} 

或者,使用的setInterval(),並檢查是否有一個對象,直到你得到一個對象或達到最大的,比方說,200次的嘗試。

另外,考慮在UCs中使函數名唯一,以防止它們在頁面上存在多個實例時覆蓋對方。以下知識庫將給你一個整潔的想法:http://www.telerik.com/support/kb/aspnet-ajax/details/using-dynamic-unique-names-for-javascript-functions