부모 페이지에 동적으로로드되는 자식 UserControl이 있습니다.C#의 자식 컨트롤에서 부모 페이지 메서드 호출
ChildControl childcontrol = this.LoadControl("") as ChildControl;
이 childUserControl의 부모 페이지에있는 메소드 중 하나를 호출해야합니다. 어떻게해야합니까?
감사
부모 페이지에 동적으로로드되는 자식 UserControl이 있습니다.C#의 자식 컨트롤에서 부모 페이지 메서드 호출
ChildControl childcontrol = this.LoadControl("") as ChildControl;
이 childUserControl의 부모 페이지에있는 메소드 중 하나를 호출해야합니다. 어떻게해야합니까?
감사
캐스트 페이지의 특정 유형으로 컨트롤의 부모 다음 메서드를 호출합니다.
페이지에있는 메서드에 의존하는 컨트롤을 작성해서는 안되므로 가장 좋은 방법은 자식 컨트롤의 이벤트를 노출하고 처리하는 것입니다. 당신의 자식 컨트롤에 다음을 추가
public event OnSomethingHandler Something;
public delegate void OnSomethingHandler(ChildControl sender);
를 그런 다음, 해당 페이지의 방법을 화재 사건 해고하고자 할 때 :
public void FireParentMethod()
{
if (Something != null)
{
Something(this);
}
}
을 당신이 할 필요가에 이벤트를 처리하다 (다음과 같은 마크 업 또는 코드) 페이지 :
childUserControl.Something+=
new ChildControl.OnSomethingHandler(ChildControl_OnSomething);
그리고 뒤에있는 코드에 처리기를 추가 :
protected void ChildControl_OnSomething(ChildControl sender)
{
FirePageMethod();
}
그래, 확실히 할 수있는 방법. 그러나 기술적으로 OP가 요구 한 것을 할 수 있습니다. :) –
@Esteban Araya - 당신은 이미 그 대답을주었습니다. 그래서 그것을 복제하는 것은 아무런 의미가 없었습니다. 그러나 차라리 기본 디자인 규칙을 제동하는 데 좋은 습관을 조장하는 답을 제시하고자합니다. – GenericTypeTea
WinForms, WPF, ASP.NET, ...? –
ASP.Net'LoadControl'과'Page'에서 추측 할 수 있습니다. – GenericTypeTea