Sei que já é bem batido, mas mesmo assim muitas pessoas me perguntam como fazer algo dinâmico para acessar um determinado control dentro de uma hierarquia vários controls. E uma boa dica é usar uma função recursiva.
public static System.Web.UI.Control FindControlRecursive(System.Web.UI.Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (System.Web.UI.Control c in root.Controls)
{
System.Web.UI.Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
Ao invês de usarmos:
Page.FindControl("control1").FindControl("control2");
usamos:
FindControlRecursive(Page, "control2");
;)