Hier von mir eine Extension um ein System.Web.UI.Control Recursive zu suchen bzw. auch eine Liste
Ich benutze das sehr sehr offt..
public static class ControlExtensions
{
public static Control FindControlRecursive(this System.Web.UI.Control parentControl, string controlId)
{
foreach (Control control in parentControl.Controls)
{
if (controlId == control.ID)
{
return control;
}
else if (control.Controls.Count > 0)
{
Control foundControl = control.FindControlRecursive(controlId);
if (foundControl != null) return foundControl;
}
}
return null;
}
public static List<Control> FindControls(this System.Web.UI.Control parentControl, params string[] controlIds)
{
return parentControl.FindControls((IEnumerable<string>)controlIds);
}
public static List<Control> FindControls(this System.Web.UI.Control parentControl, IEnumerable<string> controlIds)
{
ControlCollection parentControls = parentControl.Controls;
List<Control> controlList = new List<Control>();
if(controlIds == null)
return controlList;
foreach (string controlId in controlIds)
{
parentControl.FindControls(controlId, controlList);
}
return controlList;
}
public static List<Control> FindControls(this System.Web.UI.Control parentControl, string controlId)
{
ControlCollection parentControls = parentControl.Controls;
List<Control> controlList = new List<Control>();
parentControl.FindControls(controlId, controlList);
return controlList;
}
public static void FindControls(this System.Web.UI.Control parentControl, string controlId, List<Control> foundControls)
{
ControlCollection parentControls = parentControl.Controls;
foreach (Control control in parentControls)
{
if (controlId == control.ID)
{
foundControls.Add(control);
}
if (control.Controls.Count > 0)
{
control.FindControls(controlId, foundControls);
}
}
}
.elron