ASP.NET AJAX服务器控件 - 检测控件的实例化

时间:2009-07-28 16:05:23

标签: asp.net javascript controls

我正在创建自定义.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();
}

如果这没有意义,请告诉我。我是创建这些自定义控件的新手,所以我还不太确定术语。谢谢你的帮助!

1 个答案:

答案 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 %>");
}