2009-04-07 5 views
2

AJAX Control Toolkit의 아코디언 창을 사용하여 사이트 맵 계층 구조를 렌더링하는 데 사용되는 하위 웹 파트가 있습니다. 각 창에는 텍스트 입력이있는 div와 사이트 맵 데이터를 편집하는 데 사용되는 3 개의 LinkButton이 있습니다 : "하위 추가", "업데이트"및 "삭제".동적 컨트롤 업데이트

현재 이러한 컨트롤은 모두 재정의 된 CreateChildControls 메서드에서 만들어집니다.

"자식 추가"LinkButton을 클릭하면 이벤트 처리기가 시작되고 새 노드가 사이트 맵에 추가됩니다. 다시 게시가 완료되면 컨트롤은 계층 구조의 비어있는 새 노드로 다시 렌더링해야하지만 그렇지 않습니다. 새 GET 요청 후 새 노드가 나타납니다. 잠시 동안 읽은 후에는 컨트롤 이벤트가 시작되기 전에 CreateChildControls가 호출되기 때문에 프로세스에서 너무 빨리 자식 컨트롤을 만들었다 고 생각하여 OnPreRender 메서드로 옮겼습니다. 하지만 지금은 Control 라이프 사이클에서 너무 늦게 연결되어있어 Control 이벤트가 발생하지 않습니다 (여기를 참조하십시오 : Custom Control Events Not Firing).

내 질문은 : 사용자 지정 컨트롤이 자식 컨트롤 이벤트 처리기의 결과를 렌더링하도록하려면 어떻게해야합니까?

제쳐두고, 맞춤 서버 컨트롤이 아닌 웹 파트에서이 작업을 수행해야합니까 (예 : 수명주기가 다릅니 까?).

답변

1

페이지의 OnInit에서 EnsureChildControls를 호출 할 수 있습니다. 이렇게하면 이벤트를 처리하기 전에 하위 컨트롤을 다시 만들 수 있습니다.