2012-04-26 2 views
0

tvo 페이지, page1.ascx 및 page2.ascx가 있다고 가정 해보십시오. 두 페이지 모두 코드 숨김을 가지고 있습니다 (각각 page1.ascx.cs 및 page2.ascx.cs).다른 코드 숨김에서 ascx 콘텐츠 변경

그래서 page1과 page2는 브라우저에서 동시에 렌더링됩니다.

이제 page1.ascx에는 ListView가 있으며 해당 코드 숨김에는 PopulateListbox()를 채우는 메서드가 있습니다. page2.ascx 코드 숨김에서 PopulateListbox()를 호출하려면 어떻게해야합니까?

page1 p1 = new page1(); 
p1.PopulateListbox(); 

은 ... 작동하지 않으며, findController은 목록 상자의 ID가 null 값을 반환 찾을 수 있습니다.

모든 안내는 도움이 될 것입니다. 감사합니다.

+0

PopulateListbox()가 public인지 아닌지 확인하십시오. – userGS

답변

2
var p1 = this.Page.FindControl("page1Id") as page1; 
if (p1 != null) 
    p1.PopulateListbox(); 

다른 방법으로도이 작업을 수행 할 수 있습니다. 첫 번째 컨트롤에서 특정 동작에 대한 이벤트를 만듭니다. 상위 페이지에서 이벤트 처리기를 추가하고 이벤트 핸들러는 다음과 같은 호출

p1.PopulateListbox(); 

Here '다른 사용자 컨트롤에서 직접 하나의 사용자 제어 방법을 아무튼 액세스 자신의 이벤트

+1

첫 번째 예에서 p1은 항상 null입니다. 계속해서 이벤트 핸들러를 사용해 보겠습니다. – hallizh

+0

올바른 ID를 사용하고 있습니까? –

+1

예, 적어도 나는 그렇다고 생각합니다. 어쨌든, 이벤트 구현은 이것을 구현하는 데 훨씬 더 깨끗한 방법이라고 생각합니다. 고맙습니다! – hallizh

0

을 만드는 방법에 대한 링크를 포함합니다 훌륭한 디자인 같은 소리.

다른 사용자 컨트롤에서 새로 고침 작업을 수행해야 할 때 호출되는 page2.ascx에서 대리인을 만들면됩니다.

aspx 페이지는 해당 대리인을 구독하고 page1.ascx PopulateListBox 메서드를 호출합니다.

따라서 페이지는 두 사용자 컨트롤 간의 상호 작용을 조정하며 서로에 대해 알지 못합니다.

관련 문제