Un metodo FindControl ricorsivo per pagine ASP.NET
In alcuni casi è necessario recuperare un controllo annidato all'interno di una serie di altri, senza poter sapere a prori quale sia esattamente il suo controllo genitore. In casi come questo è necessario scrivere una funzione che faccia la scansione, in maniera ricorsiva, dell'intero albero dei controlli, così da poter essere utilizzato, ad esempio, sia all'interno di pagine che siano basate su Master Page, sia in altri contesti:
public Control FindControlRecursive(Control owner, string controlID) { Control myControl = null; // faccio un ciclo su tutti i controlli if (owner.Controls.Count > 0) { foreach (Control c in owner.Controls) { myControl = FindControlRecursive(c, controlID); if (myControl != null) return myControl; } } // ho trovato il controllo, lo restituisco if (controlID.Equals(owner.ID)) return owner; return null; } // recupero un controllo Label chiamato Title Label footer = FindControlRecursive(this, "Title") as Label;







