2014-02-11 3 views
0

나는 Page.Controls에 의해 내 페이지의 모든 컨트롤을 가져 오려고하지만, 그의 Master Page 컨트롤 만 반환하고, 어떻게이 콘텐츠 페이지 컨트롤을 얻을 수 있습니까?C#으로 내용 페이지의 모든 컨트롤을 얻는 방법?

<%@ Page Title="" Language="C#" MasterPageFile="~/Template/ManagerTemplate.Master" AutoEventWireup="true" CodeBehind="Cliente.aspx.cs" Inherits="SistemaPedido.Cadastro.Cliente" %> 

내 이벤트

protected void Page_Load(object sender, EventArgs e) 
     { 
      Page.LoadComplete += (s, arg) => 
      { 
       foreach (Control Control in Page.Controls) 
       { 
        Response.Write(Control.ClientID + "<br/>"); 
       } 
      }; 
     } 

답변

5
List<Control> lst_controls = new List<Control>(); 
     public void btnClick() 
     { 
      RetrieveAllControls(this.Page); 
      foreach(Control contrl in lst_controls) 
      { 
        // all controls 
      } 
     } 
     public static void RetrieveAllControls(Control control) 
     { 
      foreach (Control ctr in control.Controls) 
      { 
       if (ctr != null) 
       { 

        lst_controls.add(ctr);    
        if (ctr.HasControls()) 
        { 
         RetrieveAllControls(ctr, strID); 

        } 
       } 
      } 
      return null; 
     } 

어쩌면 당신은 내가 변수 이름을 변경

+0

가 대단히 감사합니다 작동하지 계속 것입니다! – Lai32290

+0

정적 메서드 내에서 비 ​​정적 lst_controls에 액세스 할 수 없습니다. –

0

이 방법으로 이름을 변경하는 경우 그것은 도움이 될 것입니다 : foreach는 (Page.Controls에서 제어 제어) 혼란을 방지 할 수 있습니다. 아마 이것 때문에 컨트롤을 보지 못했을까요?

+0

: 위의를 시도 할 수 있지만, – Lai32290