2009-08-21 3 views
0

인사말 전체, aspx 페이지의 page-init 이벤트에 두 개의 ascx가로드되었습니다. 컨트롤 1에는 selectedIndex 변경에 응답하는 컨트롤 2의 드롭 다운 목록을 원하는 라디오 단추 목록이 있습니다. 지금까지 SelectedInterxChange 핸들러에서 RaiseBubbleEvent를 호출하고 컨트롤 참조와 commandArgs를 전달합니다. 그런 다음 aspx에서 OnBubbleEvent를 재정 의하여 컨트롤 참조와 commandArgs를받을 수 있습니다. 내 질문은 컨트롤 2에이 정보를 전달하는 방법입니다. 페이지가 동적으로로드되고 asp : aspx에 PlaceHolders에 추가 될 때 컨트롤을 인식하지 못합니다. 컨트롤 2에서 드롭 다운에 대한 데이터 소스를 변경할 수 있도록 어떤 라디오 버튼이 선택되었는지 알기 위해 컨트롤 2가 필요합니다. 누구나 이와 같은 예제가 있습니까? 모든 조언이나 조언을 부탁드립니다. 샌디에고ASP.NET 동적으로로드되는 2 개의 사용자 정의 컨트롤이 서로 다른 이벤트에 어떻게 반응합니까?

답변

0

에서

감사합니다, 가 ~ CK 나는이 매우 좋은 솔루션입니다 확실하지 않다 그러나 그것은 작동합니다. 컨트롤 2의 이벤트에 대한 처리기를 만들고 해당 처리기에 대한 대리자에 액세스 할 수있는 방법이 있어야합니다. 그런 다음 해당 접근 자에 의해 반환 된 핸들러에 컨트롤 1의 이벤트를 연결하기 만하면됩니다. 매우 원유 예 : 제어 1에서

: 영문 페이지에서

public event SelectedIndexChanged; 

public void PageLoad() 
{ 
    radioList.SelectedIndexChanged += new EventHandler(RadSelectedIndexChanged); 
} 

public void RadSelectedIndexChanged(object sender, EventArgs args) 
{ 
    SelectedIndexChanged(sender, args); 
} 

: control2에서

control1.SelectedIndexChanged += control2.GetHandler(); 

:

public EventHandler GetHandler() 
{ 
    return new EventHandler(HandleEvent); 
} 

protected void HandleEvent(object sender, EventArgs args) 
{ 

} 
0

음, 컨트롤이 정말 단지에 부착한다 다른 컨트롤의 'SelectedIndexChanged'이벤트입니다. 그것은 어떤 이유로 가능하지 않습니까?

0

페이지에서 이러한 컨트롤을 인식하지 못했기 때문에 가장 좋은 방법은 Control1 클래스에서 I want to to-your-event setter 메서드를 사용하여 인터페이스를 노출하는 것입니다.

Control2는 해당 부모 (페이지)에서 인터페이스를 구현하는 다른 형제 컨트롤을 검색 한 다음 해당 처리기에 대한 참조를 전달하는 setter를 호출해야합니다.

이렇게하면 컨트롤을 수정하지 않고 다른 페이지로 컨트롤을 놓을 수 있습니다.

편집 :

추가 다운로드에 대한 sample web application. 소스 코드가 공개 도메인에 공개됩니다.

+0

나는이 아이디어가 마음에 든다. I-want-to-your-event 설정 메서드를 사용하여 인터페이스를 만드는 방법은 무엇입니까? 당신이 "setter"라고 말할 때, 속성 {set;}을 의미하고 메소드가 리턴해야하는 타입을 의미합니까? 죄송합니다. 이벤트를 코딩 할 때 약간의 초보자입니다. 감사. – Hcabnettek

+0

@Kettenbach : 샘플 앱이 추가되었습니다. – devstuff