我正在创建自定义.NET AJAX服务器控件,并且需要访问与该控件关联的JavaScript对象功能。我可以通过使用$ find方法在ScriptManager中查找控件来完成此操作。但是,我需要确定何时可以调用$ find。如果我在HTML页面正文的“onload”事件中执行此操作,则无法找到该控件。因此,我最终不得不在每次接线的情况下找到控件,我的代码最终看起来像这样:
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();
}
如果这没有意义,请告诉我。我是创建这些自定义控件的新手,所以我还不太确定术语。谢谢你的帮助!
答案 0 :(得分:1)
“加载”DOM事件发生在初始化ASP.NET Ajax客户端框架之前。通过处理init
对象的Sys.Application
事件来初始化客户端控件。这就是为什么ASP.NET Ajax控件的初始化脚本输出如下:
Sys.Application.add_init(function() {
$create( ... )
});
您可以使用Sys.Application
对象的load事件或其快捷方式pageLoad
方法。它发生在init
事件之后,然后将初始化所有ASP.NET Ajax控件。以下是一些示例代码:
var _control = null;
function pageLoad() {
_control = $find("<%= Control1.ClientID %>");
}