Crear grupos en DataGridView


Existen muchos frameworks o librerías en el mercado que nos permiten crear grupos en listados, pero la mayoría de estos son de pago, y casi siempre implica cambiar totalmente nuestra lógica de trabajo para adaptar nuestro código a éstas.

En esta ocasión quiero presentarte una clase que añade esta funcionalidad al ya existente DataGridView, sin necesidad de instalar nada.

Tiene ciertas limitantes, pero para la mayoría de los casos funciona.

Una vez agregada la referencia de la librería a nuestro proyecto bastará con implementar el código mostrado.

Declaración global en el formulario:

Subro.Controls.DataGridViewGrouper grupperListaEmpleados = new Subro.Controls.DataGridViewGrouper();

Este código prepara la clase grupper para la agrupación, se hace una sola vez en el evento de carga del formulario:

grupperListaEmpleados = new Subro.Controls.DataGridViewGrouper(dataGridView1);

Función que se llamará cuando deseemos agrupar la lista:

private void AgruparListaEmpleados(bool Valor)
{
  if (Valor == true)
  {
    grupperListaEmpleados.RemoveGrouping();
    grupperListaEmpleados.SetGroupOn("Pais");
    grupperListaEmpleados.Options.ShowGroupName = false;
    grupperListaEmpleados.Options.GroupSortOrder = System.Windows.Forms.SortOrder.None;
    dataGridView1.Columns["Pais"].Visible = false;

   dataGridView1.RowHeadersVisible = false;
   dataGridView1.ClearSelection();
   }
   else
   {
     grupperListaEmpleados.RemoveGrouping();
     dataGridView1.RowHeadersVisible = true;
     dataGridView1.Columns["Pais"].Visible = true;
   }
}

Descargar el proyecto de ejemplo completo del siguiente enlace:

https://github.com/luismacalderon/group-dgview


6 comentarios en “Crear grupos en DataGridView”

  1. Hola, muy bueno el proyecto, lo estoy haciendo en .net pero me da error en esta linea de codigo

    C#:
    Subro.Controls.DataGridViewGrouper grupperListaEmpleados = new Subro.Controls.DataGridViewGrouper();

    .NET:
    Private grupperListaEmpleados As Subro.Controls.DataGridViewGrouper = New Subro.Controls.DataGridViewGrouper()

Deja una respuesta

Tu dirección de correo electrónico no será publicada.