2010-02-23 4 views
4

asp.net 페이지도 컨트롤입니다. 페이지 컨트롤 내에서 하위 컨트롤에 액세스하려면 어떻게해야합니까?페이지 어린이 컨트롤

this.page.? 
+0

재귀 예. 여기에서 가져온 것입니다 : http://www.west-wind.com/Weblog/posts/5127.aspx – Josh

답변

3

당신은 그러나이 조심 Controls Collection

Page.Controls 

Recursive FindControls from Rick Strahl's Blog

public static Control FindControlRecursive(Control Root, string Id) 
{ 
    if (Root.ID == Id) 
     return Root; 

    foreach (Control Ctl in Root.Controls) 
    { 
     Control FoundCtl = FindControlRecursive(Ctl, Id); 
     if (FoundCtl != null) 
      return FoundCtl; 
    } 

    return null; 
} 

를 통해 액세스 할 수 있습니다. 이것은 당신이 루프 또는 무엇이든 내부에서 사용하기를 원하는 방법이 아닙니다.

5

이 시도 :

Control childControl = Page.FindControl("YourControlsID"); 
+2

자식 컨트롤에 재귀 적이 지 않기 때문에이 방법을주의하십시오. 찾으려는 컨트롤이 실제로 페이지의 자식이고 패널의 자식이나 페이지 내의 다른 자식 컨트롤이 아니라는 것을 확인해야합니다. –

+0

+1 또한 1 차 하위 컨트롤과 그 형제에 대해서만 작동한다는 점에 유의해야합니다. 중첩 된 컨트롤을 찾으려면 재귀를 사용해야합니다. – Josh

+0

재귀 코드를 제공 할 수 있습니까? Page.Contorls에는 1 차 하위가 포함되어 있습니까? –

4
  • Page.Controls
  • FindControl 메서드 내 대답은 아래에 제공