【问题标题】:$find RadWindowManager object is always returned null value$find RadWindowManager 对象总是返回空值
【发布时间】:2015-09-16 03:42:16
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    确保在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 2017-06-28
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      相关资源
      最近更新 更多