none
Refrescar / Recargar DataGridView RRS feed

  • Pregunta

  • Por favor, podríais ayudarme con esto:

    Tengo un form1 que tiene un dataGridView enlazado a una tabla.

    Desde form1 se puede abrir un form2 y en este segundo form modifico ESA MISMA tabla; añado, borro, etc, registros

    Necesito que al volver al form1 se recargue el dataGridView para que muestre los cambios.

    He probado con refresh y con update y no me funciona

    ¿alguna idea please?

    Gracias

    martes, 28 de julio de 2015 7:02

Respuestas

  • Hola JotaQ:

     Creo que estas confundiendo los eventos y sus finalidades, lo único que realizan es un redibujado del control sin actualizar la fuente de datos al cual este relacionado.

     Para solucionar tu problema, debes de hacer lo que te comenta CM16, abstraer en un metodo la carga de tu datos a tu control para asi mandar a llamar este metodo en cualquier lugar que requieras actulizar el origen de datos de tu control.

    Groso modo seria asi:

    private void form1_load(...)
    {
     datagridview1.DataSource = Getdata();
    }
    
    //Creas la funcion
    private DataTable GetData()
    {
     //creas las lienas de codigo necesarias para llenar el DataTable con el resultado de una consulta
     return dataTable; //retornas el DataTable previamente cargado
    }
    
    //lanzas un segundo formulario de Edicion y al cerrarse mandas a llamar al GetData() para mostrar los cambios
    private button1_click(...)
    {
     using(var frm = new Form2())
    {
     frm.ShowDialog();
     
      //Aqui es donde haces que el control muestre la nueva informacion
      datagridview1.DataSource = Getdata();
    }
    }
     Espero te sirva de guia.

     


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta JotaQ miércoles, 29 de julio de 2015 7:37
    martes, 28 de julio de 2015 13:20

Todas las respuestas

  • Buenos días. ¿Como llenas tu datagridview?

    Puedes realizar un subproceso, por ejemplo de 'LlenarDatagrid', y llamarlo tanto cuando cargas el formulario como cuando regresas a él.

    En dicho subproceso creas la rutina de carga del datagrid.

    Saludos.

    martes, 28 de julio de 2015 11:59
  • Hola JotaQ:

     Creo que estas confundiendo los eventos y sus finalidades, lo único que realizan es un redibujado del control sin actualizar la fuente de datos al cual este relacionado.

     Para solucionar tu problema, debes de hacer lo que te comenta CM16, abstraer en un metodo la carga de tu datos a tu control para asi mandar a llamar este metodo en cualquier lugar que requieras actulizar el origen de datos de tu control.

    Groso modo seria asi:

    private void form1_load(...)
    {
     datagridview1.DataSource = Getdata();
    }
    
    //Creas la funcion
    private DataTable GetData()
    {
     //creas las lienas de codigo necesarias para llenar el DataTable con el resultado de una consulta
     return dataTable; //retornas el DataTable previamente cargado
    }
    
    //lanzas un segundo formulario de Edicion y al cerrarse mandas a llamar al GetData() para mostrar los cambios
    private button1_click(...)
    {
     using(var frm = new Form2())
    {
     frm.ShowDialog();
     
      //Aqui es donde haces que el control muestre la nueva informacion
      datagridview1.DataSource = Getdata();
    }
    }
     Espero te sirva de guia.

     


    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta JotaQ miércoles, 29 de julio de 2015 7:37
    martes, 28 de julio de 2015 13:20
  • Hola José, hay dos opciones que se me ocurren rápidamente:

    1. Declarar tu método GetData como público y llamarlo desde form2 cuando lo necesitas.
    2. En el evento Activated del form1 puedes llamar al método GetData. (No recomendado)

    Para el caso 1:

    //Creas la funcion
    public DataTable GetData()
    {
     //creas las lienas de codigo necesarias para llenar el DataTable con el resultado de una consulta
     return dataTable; //retornas el DataTable previamente cargado
    }

    En el botón volver o similar llamas al formulario 1:

    //asumiendo que tu form1 está declarado dentro del form2!
    form1.GetData()

    Para el caso 2:

    Puedes utilizar el evento form1_Activated:

    private void Form1_Activated(object sender, System.EventArgs e)
    {
        //Aquí no hace falta que GetData sea público, actualizará los datos pero se lanzará ante cualquier retorno del foco a este formulario,
        this.GetData();
    }

    Espero resulte útil.

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    MCP Profile
    My code samples

    martes, 28 de julio de 2015 20:47