2009-07-28 10 views
2

カスタム.NET AJAXサーバーコントロールを作成しており、そのコントロールに関連付けられたJavaScriptオブジェクト機能にアクセスする必要があります。私は、$ findメソッドを使ってScriptManagerでコントロールを見つけることでこれを行うことができます。しかし、私は$ findと呼ぶことができるかどうかを判断する必要があります。私がHTMLページの本文の "onload"イベントでこれを行うと、コントロールを見つけることができません。ASP.NET AJAXサーバーコントロール - コントロールのインスタンス化を検出する

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

"load" DOMイベントは、ASP.NET Ajaxクライアント側フレームワークが初期化される前に発生します。クライアント側のコントロールは、Sys.Applicationオブジェクトのinitイベントを処理することによって初期化されます。

Sys.Application.add_init(function() { 
    $create(...) 
}); 

あなたはSys.Applicationオブジェクトまたはそのshortcut- pageLoad方法のloadイベントを使用することができます:ASP.NET Ajaxのコントロールの初期化スクリプトは、出力は次のようである理由です。 initイベントの後に発生し、すべてのASP.NET Ajaxコントロールが初期化されます。ここにいくつかのサンプルコードがあります:

var _control = null; 

function pageLoad() { 
    _control = $find("<%= Control1.ClientID %>"); 
} 
+0

これは私が必要としていたものです。ご助力ありがとうございます! –

関連する問題