Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Eliminar columnas de un datagridview automaticamente si no contiene datos (DBnull).

Estas en el tema de Eliminar columnas de un datagridview automaticamente si no contiene datos (DBnull). en el foro de .NET en Foros del Web. Hola de nuevo. Un saludo a todos. Tengo la siguiente duda, primero como puedo saber si una columna de un datagridview en ninguno de sus ...
  #1 (permalink)  
Antiguo 02/09/2013, 17:53
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Eliminar columnas de un datagridview automaticamente si no contiene datos (DBnull).

Hola de nuevo. Un saludo a todos.

Tengo la siguiente duda, primero como puedo saber si una columna de un datagridview en ninguno de sus registros de esa columna no tiene ni un solo registro es decir que sean DBNull, y una vez que se identifique dicha columna eliminarla automáticamente del datagridview.

se tiene que recorrer de una en una las columnas para poder realizar la eliminación si cumple con la condición (==DBNull).

Trabajo con Visual Studio 2010 C# ADO.NET

Agradecería cualquier aporte o una idea de como realizarlo.

Saludos!!
  #2 (permalink)  
Antiguo 03/09/2013, 04:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Eliminar columnas de un datagridview automaticamente si no contiene datos

La respuesta no eliminarla, sino hacerla invisible, que la vista no la muestre.
Por otro lado, ten en cuenta que el que haya un DbNull en una columna de un determinado registro, no implica necesariamente que esa columna sea nula en todos los registros obtenidos.
Lo que planteas es aplicable sólo si es un único registro, o bien si todos los registros tienen nulo en esa columna. En todo caso, es una acción que debe realizarse inmediatamente después de obtener la tabla de datos.
La rutina no es difícil de escribir, si nos muestras código donde lo hayas intentado, o cómo lo planearías tu, sería más sencillo.
Trabajar en teoría no es muy útil. Es mejor ver lo que tienes, para guiarte en forma que entiendas claramente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/09/2013, 18:54
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Respuesta: Eliminar columnas de un datagridview automaticamente si no contiene datos

Este es mi código hasta ahora, pero no me realiza nada, lo que intento hacer es poner a recorrer lo registros de cada columna y si tienen dato DBNull con un contador ir sumando las veces que entre en esa condición y por ultimo comparar si el contador coincide con el numero de registros en la tabla entonces poner la columna como no visible.

este es el Código:

Código:
int columna = 3;
int registros = 0;
            foreach (DataGridViewColumn col in dataGridView2.Columns)
            {
                if (columna < dataGridView2.Columns.Count - 1)
                {
                    foreach (DataGridViewRow fila in dataGridView2.Rows)
                    {
                        if (fila.Cells[columna].Value == DBNull.Value)
                        {
                            registros++;
                        }
                        if (registros == dataGridView2.Rows.Count -1)
                        {
                        dataGridView2.Columns[columna].Visible = false;
                         }
                            else
                            {
                                if (columna < dataGridView2.Columns.Count -1)
                                {
                                    columna++;
                                }
                            }
                    }

                    
                }
            }
  #4 (permalink)  
Antiguo 04/09/2013, 18:21
 
Fecha de Ingreso: agosto-2013
Ubicación: Ensenada
Mensajes: 7
Antigüedad: 10 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Eliminar columnas de un datagridview automaticamente si no contiene datos

Listo!!, logré elimanar por medio de un botón aquellas columnas en donde todos sus registros fueran BDNull, por si alguien le interesa le dejo el código:
Código:
int columna = 3;
            int registros = 0;
            foreach (DataGridViewColumn col in dataGridView2.Columns)
            {
                if (columna < dataGridView2.Columns.Count - 1)
                {
                    foreach (DataGridViewRow fila in dataGridView2.Rows)
                    {
                        if (fila.Cells[columna].Value == DBNull.Value)
                        {
                                registros++;
                        }
                        if (registros == dataGridView2.Rows.Count -1)
                        {
                        dataGridView2.Columns[columna].Visible = false;
                         }
                            
                    }
                    registros = 0;   
                }
                columna++; 
            }
Saludos!

Etiquetas: automaticamente, columnas, datagridview, net, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:46.