Laden...

Für alle die, die mit der FindControl Methode nicht zufrieden sind :)

Erstellt von elron vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.047 Views
E
elron Themenstarter:in
171 Beiträge seit 2004
vor 14 Jahren
Für alle die, die mit der FindControl Methode nicht zufrieden sind :)

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