Iterate though all controls on asp.net page

前端 未结 3 1796
误落风尘
误落风尘 2021-01-15 05:14

I\'m using ascx and I need to iterate through all of the controls and selects each that have cssClass attribute set to \'required\'.

I have the following code:

3条回答
  •  孤街浪徒
    2021-01-15 06:02

    CssClass property is a member of the WebControl class.

    You have to check if the control is a webcontrol, or, if it's only a control, you can get the attribute "class" in the attributes collection.

    for example, you can do :

    List wcs = new List();
    GetControlList(Page.Controls, wcs)
    foreach (WebControl childControl in wcs)
    {
         if(childControl.CssClass == "required") {
              // process the control
         }
    }
    

    You also have to iterate recursively. Code found here : Using C# to recursively get a collection of controls from a controlcollection :

    private void GetControlList(ControlCollection controlCollection, List resultCollection)
    where T : Control
    {
        foreach (Control control in controlCollection)
        {
            //if (control.GetType() == typeof(T))
            if (control is T) // This is cleaner
                resultCollection.Add((T)control);
    
            if (control.HasControls())
                GetControlList(control.Controls, resultCollection);
        }
    }
    

提交回复
热议问题