2014-02-11 31 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

相關問題