Recorrer todos los controles de una página ASP.NET

Buscando la manera de encontrar una serie de Gridview en una página es que llegué a crear esta función. Que es básicamente recorrer los controles de manera recursiva porque un control puede contener a otros controles en su interior. En mi caso era solamente ocultar el FooterRow de las Grillas (Gridview) y tengo en cuenta que cuando la grilla no tiene rows la oculto directamente.

El código en VB:

        For Each ctrl As Control In Page.Controls
          Dim gv As GridView = TryCast(ctrl, GridView)
          If gv Is Nothing Then
               RecorrerColeccion(ctrl)
          Else
              If gv.Rows.Count > 0 Then
                 gv.FooterRow.Visible = False
               Else
                 gv.Visible = False
              End If
          End If
       Next

Acá esta la función recursiva RecorrerColeccion:

 Sub RecorrerColeccion(ByVal parentCtrl As Control)
          For Each pctrl As Control In parentCtrl.Controls
              Dim gv As GridView = TryCast(pctrl, GridView)
              If gv Is Nothing Then
                  RecorrerColeccion(pctrl)
              Else
                  If gv.Rows.Count > 0 Then
                      gv.FooterRow.Visible = False
                  Else
                      gv.Visible = False
                  End If
              End If
          Next
      End Sub

Y acá esta el mismo ejemplo en C#:

 foreach (Control ctrl in Page.Controls) {
      GridView gv = ctrl as GridView;
      if (gv == null) {
          RecorrerColeccion(ctrl);
      } else {
          if (gv.Rows.Count > 0) {
              gv.FooterRow.Visible = false;
         } else {
              gv.Visible = false;
          }
      }
  }
   
  public void RecorrerColeccion(Control parentCtrl)
  {
      foreach (Control pctrl in parentCtrl.Controls) {
          GridView gv = pctrl as GridView;
          if (gv == null) {
              RecorrerColeccion(pctrl);
          } else {
              if (gv.Rows.Count > 0) {
                  gv.FooterRow.Visible = false;
              } else {
                  gv.Visible = false;
              }
          }
      }
  }

Espero que les resuelva el problema como a mi.

Saludos.

Anuncios

Un comentario sobre “Recorrer todos los controles de una página ASP.NET

  1. Muchas muchas gracias por este post! me salvaste dias de trabajo donde no conseguia encontrar los valores de los controles!!!!!

    GRACIAS!
    MArianela

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s