2012-01-03 2 views
0

다음은 내 페이지 & 컨트롤 계층 구조입니다.리피터가있는 중첩 된 사용자 컨트롤에서 버튼 클릭 이벤트 캡처

Page 
    UserControl 1 
    <Repeater1> //Contents of UserControl 1 
     UserControl 2 
     <Accordion> //Contents of UserControl 2 
     <Header/> 
     <Content> 
      <Repeater2/> //Repeater 2 is within Usercontrol 2 
     <Button/> // Button is within Usercontrol2, not Repeater 2 
     </Accordion> 
    </Repeater1> 

나는을 클릭 버튼시 Repeater2를 새로 고침 할 수 있어야합니다.

모든 포인터가 정말 도움이 될 것입니다.

답변

0

버튼 클릭만으로 이벤트를 첨부하십시오. 이 이벤트에서 repeater2에 도달하도록 제어 계층 구조를 탐색 할 수 있어야합니다.

Button theButton = sender as Button; 
UserControl2 parentControl = theButton.Parent as UserControl2; 

Repeater theRepeater = null; 
foreach(Control control in parentControl.Controls){ 
    theRepeater = control as Repeater; 
    if(theRepeater != null) break; 
} 
+0

감사합니다. 또한 나는 Accordion 전체를 둘러싼 UserControl2에서 UpdatePanel을 사용한다는 사실을 잊어 버렸다. 그게 선호되는 방법인가요? – spraman

+0

업데이트 패널에서 자녀를 트리거로 삼는 한 괜찮을 것입니다. 업데이트 패널을 사용하면 개발자가되기 쉽지만 무거울 것입니다 (viewstate는 여전히 전달됩니다). 페이지 메소드 나 ASMX 스크립트 서비스를 JSON 템플릿과 JQuery와 함께 사용하면 더 많은 작업을 수행 할 수 있지만 가장 간단한 방법이 될 수 있습니다. – Arbiter

+0

당신 말이 맞아요. 또한 그것은 나를 위해 오버 헤드가 부분적인 페이지 새로 고침을 수행 할 때마다 데이터 원본을 매번 바인딩해야 찾을. 그리고 Repeater1 독립 실행 형 항목에서 UpdatePanel을 사용하여 항목을 새로 고치는 것은 불가능하다고 생각합니다. 전체 데이터를 다시 가져 와서 바인딩해야합니다. 페이지 메소드 나 ASMX 스크립트 서비스를 사용하는 데 필요한 리소스를 알려 주시면 감사하겠습니다. 감사. – spraman

관련 문제