Microsoft Trainer e Software Architect
Sviluppatore professionista dal 2001 con VB6, SQL 2000 e Access creando applicazioni gestionali di varia natura. Passando rapidamente a .NET, windows e web, ho poi espanso le mie esperienze su Compact Framework, SQL Server Mobile ed infine BizTalk Server.
Negli ultimi anni mi sono focalizzato sempre più sullo sviluppo distribuito ed enterprise conseguendo nel contempo le seguenti certificazioni:
Microsoft Certified Trainer (MCT)Microsoft MCPD .NET 3.5 Enterprise Applications DeveloperMicrosoft MCTS .NET 3.5 WCF Applications DevelopmentMicrosoft MCTS .NET 3.5 ASP.NET Applications DevelopmentMicrosoft MCTS .NET 3.5 ADO.NET Applications DevelopmentMicrosoft MCTS .NET 3.5 Windows Applications DevelopmentMicrosoft MCTS .NET 2.0 Distributed Applications DevelopmentMicrosoft MCP .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; } }
Ma il metodo Control.FindControl non ha lo stesso comportamento?
sfortunatamente no, cerca i controlli nel nuo namingcontainer (in pratica in .Controls)
se cerchi infatti un controllo che è a sua volta annidato (tipo un gridview) non lo trovi
qui il ricorsivo ti da una mano, ma bisogna stare attenti agli id multipli in scenari come appunto un gridview dove lo stessso link è ripetuto ma con CommandName e CommandArgument diversi.
Eventualmente ci si potrebbe aggiungere una versione che verifica appunto queste proprietà, ma dovrebbe essere tipizzata