Autor Tema: ocultar columnas vacias en datagridview Visual Basic  (Leído 9269 veces)

Mary

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
ocultar columnas vacias en datagridview Visual Basic
« en: 11 de Octubre 2014, 11:45 »
Hola,
estoy intentando que en un datagridview, las columnas que están completamente vacías (a excepción del nombre del campo) se mantengan ocultas. Tengo un datagridview que está asociado a algunas tablas de una base de datos Access.
Según la tabla que importo desde la base de datos, aunque los nombres y el número de columnas es siempre el mismo, hay veces que hay columnas que están vacías y otras que están llenas. Básicamente lo que se muestra en el datagridview es lo siguiente:

Columna 1   Columna 2   Columna 3   Columna 4
      1                                                      36
                        45                                  45
      2                 37                                105
      4                                                     205

según el ejemplo anterior, lo que estoy intentando sería que en el datagridview aparecieran solamente las Columnas 1, 2 y 4. Mientras que la Columna 3 debería permanecer oculta.
Bueno para ello, he hecho el siguiente código para cada una de las columnas:

   DataGridView11.Columns("Columna1").Visible = False

            Dim ira As Boolean
            Dim i As Integer
            For i = 0 To DataGridView11.Rows.Count - 1
            If IsDBNull(DataGridView11.Rows(i).Cells("Columna1").Value) Then
                    ira = False
                    DataGridView11.Columns("Columna1").Visible = False
                   
                Else
                    ira = True
                    Exit For
                End If
            Next i

            If ira Then

                DataGridView11.Columns("Columna1").Visible = True

            End If


Primero lo que digo es que todas las columnas estén ocultas (DataGridView11.Columns("Columna1").Visible = False)

Después le indico que recorra las filas de esa columna (For Next) y que cuando encuentre un valor, entonces  debe hacer que la columna sea visible (DataGridView11.Columns("Columna1").Visible = True) y que se detenga (Exit For).
Lo que sucede es que no consigo que me salga y no tengo ni idea de que estoy haciendo mal. ¿Alguien sabría que código se debe utilizar para conseguir esto? Gracias.
Saludos,
 




« Última modificación: 15 de Octubre 2014, 09:05 por Alex Rodríguez »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:ocultar columnas vacias en datagridview
« Respuesta #1 en: 12 de Octubre 2014, 20:45 »
Aquí he encontrado una propuesta que parece resuelve lo que quieres hacer.

El código con el método al que tienes que llamar sería el siguiente:

Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace MyProject
{
    public static class ExtensionGridView
    {
        public static DataGridView RemoveEmptyColumns(this DataGridView grdView)
        {
            foreach (DataGridViewColumn clm in grdView.Columns)
            {
                bool notAvailable = true;
 
                foreach (DataGridViewRow row in grdView.Rows)
                {
                    if (! string.IsNullOrEmpty(row.Cells[clm.Index].Value.ToString()))
                    {
                        notAvailable = false;
                        break;
                    }                   
                }
                if (notAvailable)
                {
                    grdView.Columns[clm.Index].Visible = false;
                }
            }
 
            return grdView;
        }
    }
}

Y para llamarlo tendrías que invocar el método sobre el datagridview al que quieras aplicárselo, por ejemplo:

DataGridView11.RemoveEmptyColumns();

Ya nos contarás si te funciona  :)

Mary

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 38
    • Ver Perfil
Re:ocultar columnas vacias en datagridview
« Respuesta #2 en: 13 de Octubre 2014, 14:01 »
Hola,
gracias por responder. He probado el código pero todo me sale con errores. He probado a introducirlo en un modulo, pero tengo lo mismo. Cuando pongo 'Using' me sale error, debo sustituirlo por 'Imports' y la función 'Foreach' también me la indica como error. Seguro es una pregunta muy tonta, pero ¿este código es para Visual Basic?

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:ocultar columnas vacias en datagridview
« Respuesta #3 en: 13 de Octubre 2014, 20:32 »
Tienes razón, creo que el código es para C#, por lo que para usarlo en Visual Basic habría que adaptarlo, perdona por el error   ???

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".