24

Apr

Cercare controlli innestati in ASP.NET

Ciao  tutti

vi è mai capitato di dover cercare un controllo in una pagina ASP.NET e non lo trovate perchè perso tra master, listview/gridview varie che avete usato?!?!?!

Io ho risolto creando una Extension alla classe Control così che tutti i controlli e le pagine lo abbiano a disposizione per cercare.
Unico avvertimento, attenzione a quando lo usate per cercare controlli interni ad un listview o ad un gridview perchè il metodo tornerà sempre solo il primo dei tanti.

    public static class Extensions
    {
        public static Control FindNestedControl(this Control control, string ID)
        {
            if (control == null || string.IsNullOrEmpty(ID))
                return null;
            else if (control.ID == ID)
                return control;
            else if (control.Controls.Count > 0)
            {
                foreach (Control c in control.Controls)
                {
                    var found = c.FindNestedControl(ID);
                    if (found != null)
                        return found;
                }
                return null;
            }
            else
                return null;
        }
    }
 

by Antonio Esposito on 4/24/2010