Cómo añadir secciones THEAD y TFOOT a un GridView de ASP .NET

El control GridView de ASP .NET, que viene a sustituir al viejo DataGrid, es uno de los más interesantes. Sin embargo, una de las cosas más molestas es que genera todas las filas, incluso las de cabecera, dentro de la sección TBODY de la tabla HTML que genera, sin utilizar para nada las secciones THEAD o TFOOT.
Existe una manera muy sencilla de solucionarlo, que consiste en indicar la propiedad TableSection para las filas de cabecera y pie a los valores TableRowSection.TableHeader y TableRowSection.TableFooter respectivamente.
Sin embargo, si por ejemplo se hace clic en una columna del control GridView para ordenar, el HTML se regenera. Esto significa que, después de un DataBind, ya sea llamado de forma implícita o utilizando un ObjectDataSource o SqlDataSource, necesitaremos hacer los cambios de nuevo. Por ello la manera más sencilla y que nos permite tener el código en un solo lugar, es hacerlo en el evento PreRender del GridView.
protected override void OnPreRender(EventArgs e) {
   base.OnPreRender(e);
   if (this.Rows.Count > 0) {
      if (this.HeaderRow != null) {
         this.HeaderRow.TableSection = TableRowSection.TableHeader;
      }
      if (this.FooterRow != null) {
         this.FooterRow.TableSection = TableRowSection.TableFooter;
      }
   }
}
En mi caso, he creado un control propio, que hereda de GridView, al que he añadido simplemente las líneas anteriores para conseguir lo que buscaba.
Nuestra puntuación
Twittear
Compartir
Compartir
Pin