miércoles, 18 de marzo de 2009

Agrupar en un asp:gridview

Para agrupar filas en un asp:gridview tenemos que programar el evento RowDataBound de la grilla y crear las rows agrupadora dinamicas en ese evento. Por ejemplo supongamos que agrupamos por la propiedad Proyecto de un objeto instancia de la clase Accion


private string campoAgrupador = string.Empty;
private int iColumnasAgregadas = 0;
protected void grdTareas_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
Accion accionActual = e.Row.DataItem as Accion;
if (accionActual.Proyecto != campoAgrupador)
{
GridViewRow rowAgrupadora = new GridViewRow(-1, -1, DataControlRowType.DataRow, DataControlRowState.Normal);
TableCell cell = new TableCell();
Label l = new Label();
l.Text = "Agrupo por "+accionActual.Proyecto;
cell.Controls.Add(l);
cell.ColumnSpan = 10;
rowAgrupadora.Cells.Add(new TableCell());
rowAgrupadora.Cells.Add(cell);
((Table)e.Row.Parent).Rows.AddAt(e.Row.RowIndex +1 +iColumnasAgregadas, rowAgrupadora);
campoAgrupador = accionActual.Proyecto;
iColumnasAgregadas++;
}
}
}

2 comentarios:

Unknown dijo...

Donde encuentro informacion dela clase accion? gracias

Liz Barraza dijo...

Excelente funciono de maravillas Gracias!