2009-07-28 5 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

"로드"DOM 이벤트는 ASP.NET Ajax 클라이언트 측 프레임 워크가 초기화되기 전에 발생합니다. 클라이언트 측 컨트롤은 Sys.Application 개체의 init 이벤트를 처리하여 초기화됩니다.

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

당신은 Sys.Application object 또는 그 shortcut- pageLoad 방법의 load 이벤트를 사용할 수는 ASP.NET 아약스 컨트롤의 초기화 스크립트는 출력이 같은 이유입니다. init 이벤트가 발생하면 모든 ASP.NET Ajax 컨트롤이 초기화됩니다. 다음은 몇 가지 샘플 코드입니다.

var _control = null; 

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

이것은 내가 필요한 것입니다. 당신의 도움을 주셔서 대단히 감사합니다! –

관련 문제