$ find RadWindowManager对象总是返回null值

时间:2015-09-16 03:42:16

标签: javascript asp.net vb.net telerik radwindow

我有一个奇怪的问题,我无法理解它发生的原因。

在同一* .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>

1 个答案:

答案 0 :(得分:0)

确保在Sys.Application.Load事件之后调用init()函数(实际上是GetRWndManager()函数),因为在此之前可能不会创建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次尝试。

另外,考虑在UC中使函数名称唯一,以防止它们在页面上有多个实例时相互覆盖。以下KB将为您提供一个简洁的想法:http://www.telerik.com/support/kb/aspnet-ajax/details/using-dynamic-unique-names-for-javascript-functions