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

Visual Basic Datagridview congela aplicacion

Estas en el tema de Visual Basic Datagridview congela aplicacion en el foro de .NET en Foros del Web. Buenas Genios de Foros del Web. Necesito una ayudita. Tengo un Datagridview que lleno a través de un dataset, son muchos datos y a veces ...
  #1 (permalink)  
Antiguo 18/05/2013, 07:56
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Exclamación Visual Basic Datagridview congela aplicacion

Buenas Genios de Foros del Web. Necesito una ayudita. Tengo un Datagridview que lleno a través de un dataset, son muchos datos y a veces el usuario como no ve que la aplicación está llenado ese Datagridview, empieza a hacer clics por todos lados para así lograr milagrosamente que la aplicación cargue los datos mas rápido .

Lo que necesito entonces es poder poner un pequeño formulario emergente cuando se presiona el botón para traer los datos de la Base de Datos que muestre el progreso de la carga o en su defecto que tenga alguna imagen Gif como que la aplicación esta "cargando" y que al quedar en primer plano bloquee el resto de los controles, una vez que el grid esta completo que desaparezca.

Escuche algo de poder hacerlo con un backgroundworker, lo cual me gustaría implementar, pero no tengo idea de como hacer. Leí algo pero nada como para lo que yo necesito. Espero que alguno de los capos de acá me puedan ayudar y haber sido lo suficientemente claro.

Saludos desde Argentina!
  #2 (permalink)  
Antiguo 18/05/2013, 11:16
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: Visual Basic Datagridview congela aplicacion

Podrías Hacerlo con una Hebra...

Creas un método que será el encargado de ocultar los controles, mostrar la imagen de "Cargando", cargar los datos en el DataGrid, y una vez que acabe de cargar, ocultar la imagen y mostrar los controles
Código:
public void LoadData()
{

            this.Invoke((MethodInvoker)delegate
            {
                     //Muestras un control ProgresBar (Por ejemplo)
                     //  Estableces la propiedad Enabled a False en los controles que no quieras.
            });

            //Cargas los datos en el Datagrid

            this.Invoke((MethodInvoker)delegate
            {
                      //Harías lo contrario al primer bloque, por que los datos ya estarían cargados.
            });
}
En el Evento Click del botón:
Código:
new System.Threading.Thread(new System.Threading.ThreadStart(LoadData)).Start();
__________________
Charlie.
  #3 (permalink)  
Antiguo 18/05/2013, 11:18
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Visual Basic Datagridview congela aplicacion

Tal vez te sirva poner un Progressbar y darle como valor maximo el total de registros a insertar, asi cada que insertes un registro le sumas uno a tu Progressbar para que se vea que trabaja, es una opcion muy sencilla segun yo, la otra es que a un Progressbar le actives en la propiedad Progressbar Style la opcion "Marquee" asi tendra un desplazamiento "libre" y sabra el usuario que esta trabajando.

Saludos....
  #4 (permalink)  
Antiguo 19/05/2013, 10:44
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Visual Basic Datagridview

El problema es que es una consulta dinámica, no se cuantos registros se van a cargar. Por eso quería hacer que esa consulta se ejecute en un backgroundworker, y mientras tanto mostrar un progressbar o algo similar..
  #5 (permalink)  
Antiguo 19/05/2013, 14:38
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Visual basic datagridview

Aclaro que estoy programando en vb.Net 2012

Etiquetas: 2012, backgroundworker, basic, datagridview, vb, 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 13:04.