问题描述
|
我正在尝试进行一些客户端初始化,其中涉及对某些RadComboBoxes的ClientID调用$ find()。
我的代码是从挂钩到窗口加载的事件处理程序运行的:
Sys.UI.DomEvent.addHandler(window,\'load\',function()
{
// My initialization stuff
}
);
在此代码中,$ find(clientid)返回null。
如果我将初始化代码移到window.setTimeout(),则$ find()可以正常工作。显然,唯一的问题是,在执行窗口加载处理程序时,客户端代码尚未初始化。
当浏览Telerik论坛时,我看到将初始化代码放在pageLoad()中的建议。考虑到该项目中代码的组织,这是不可能的。 (页面上只能有一个pageLoad()函数-我们为可能包含在单个页面中的多个用户控件提供了单独的初始化函数。我们希望将每个封装的初始化都保留在控件内, \不想将所有初始化都放到一个页面级函数中。)
我们是否可以使用Sys.UI.DomEvent捕获任何标准事件,可以向其中添加在初始化telerik控件后将触发的处理程序?
解决方法
如何使用Sys.Application.add_load()?
, 您可以为pageLoaded事件提供一些处理程序。只需放在下面的ScriptManager标签脚本之后:
<script type=\"text/javascript\">
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler1);
function pageLoad() {
Sys.Debug.trace(\"in pageLoad\");
}
function pageLoadedHandler1(sender,args) {
Sys.Debug.trace(\"in pageLoadedHandler1\");
}
</script>