A recursive FindControl extension method
The System.Web.UI.Control class has a FindControl method for finding a control by its ID. This method searches for a given control in the first level child controls, and not in any child controls of a child. In order to do the latter, a custom method must be implemented. Below is a generic, recursive, extension method that does this:
public static class ControlExtension
{
public static T FindControlRecursive(this Control container, string id)
where T : Control
{
if (container.HasControls())
{
T foundControl = null;
foreach (Control control in container.Controls)
{
if (control.ID == id && control is T)
foundControl = (T) control;
else
foundControl = FindControlRecursive(control, id);
if (foundControl != null)
return foundControl;
}
}
return null;
}
}
Usage:
var control = Page.FindControlRecursive("TxtName");
Published: 04.10.2009
blog comments powered by Disqus

