segunda-feira, 20 de julho de 2015

CustomFindControl

using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Lapuinka.Utils
{
    public static class CustomFindControl
    {
        public static List<Control> children = new List<Control>();

        ///
        /// Método FindControl Tipado para retornar todos os controles de uma página por tipo determinado.
        /// T = Controle que deseja encontrar, startFrom = Caminho em que o método vai dar inicio a busca
        /// de componentes. Obs: Caso não saiba onde o componente se encontra, colocar ContentPlaceHolder
        /// para inicio  de busca.
        /// Ex.:  var content = (ContentPlaceHolder)Page.Master.FindControl("cphPrincipal");
        ///var controls = CustomFindControl.FindControl[Panel](content);
        ///    foreach (var panel in controls.OfType[Panel]())
        ///        panel.Enabled = false;
        ///
        ///
        ///
        ///
        public static List<Control> FindControl(Control startFrom)
        {
            foreach (Control child in startFrom.Controls)
            {
                if (child.GetType().IsAssignableFrom(typeof(T)))
                {
                    children.Add(child);
                }

                FindControl(child);
            }

            return children;
        }
    }
}


Postar um comentário