none
Actualizar dataGridView con entity framework RRS feed

  • Pregunta

  • Tengo dos formularios, uno en el que muestro un datagridview con los datos de una bbdd y otro para agregar datos a la bbdd todo con linq y entity framework. Lo que quiero es que al insertar un dato en la bbdd se me actualice el datagridview del primer form.

    Pongo ejemplo de como lo tengo:

    //Form1 - Contiene el dataGridView
    private ConsultaEntities model = new ConsultaEntities();
    
    private void Form1_Load(object sender, EventArgs e)
    {
         EnlaceDatos();
    }
    
    public void EnlaceDatos()
    {
        var query = from x in model.Datos select x;
        
        dataGridView1.DataSource = query;
    }
    
    //Form2 - Insertar datos
    Form1 frmPadre = new Form1();
    
    private void btnEnviar_Click(object sender, EventArgs e)
    {
        ConsultaEntities model = new ConsultaEntities();
        model.Datos.AddObject(new Dato { Nombre = "asd" });
        model.SaveChanges();
        
        frmPadre.EnlaceDatos();   //LLamo desde aqui pero no me actualiza el dataGridView
        this.Close();
    }
    

    • Cambiado webJoseModerator jueves, 22 de noviembre de 2012 14:02 (De:Lenguaje C#)
    jueves, 22 de noviembre de 2012 13:45

Respuestas

  • Lo que usted necesita es enlazar su DGV a un componente BindingSource.  Luego enlace este BindingSource a un List<Entidad>.  Asegúrese de que su entidad implemente INotifyPropertyChanged para una mejor experiencia.

    Ah, luego de que hace esto, simplemente cree su nueva entidad en el formulario B y agréguelo a la list List<Entidad> del formulario 1.  El DGV automáticamente mostrará el nuevo item gracias a las bondades del enlace a datos.


    Jose R. MCP
    Code Samples


    • Editado webJoseModerator jueves, 22 de noviembre de 2012 14:01
    • Marcado como respuesta hectorrp jueves, 22 de noviembre de 2012 14:06
    jueves, 22 de noviembre de 2012 14:00
    Moderador

Todas las respuestas

  • Lo que usted necesita es enlazar su DGV a un componente BindingSource.  Luego enlace este BindingSource a un List<Entidad>.  Asegúrese de que su entidad implemente INotifyPropertyChanged para una mejor experiencia.

    Ah, luego de que hace esto, simplemente cree su nueva entidad en el formulario B y agréguelo a la list List<Entidad> del formulario 1.  El DGV automáticamente mostrará el nuevo item gracias a las bondades del enlace a datos.


    Jose R. MCP
    Code Samples


    • Editado webJoseModerator jueves, 22 de noviembre de 2012 14:01
    • Marcado como respuesta hectorrp jueves, 22 de noviembre de 2012 14:06
    jueves, 22 de noviembre de 2012 14:00
    Moderador
  • Lo que quiero es que al insertar un dato en la bbdd se me actualice el datagridview del primer form.

    pero ese segundo form se abre de form modal desde el primero ? porque podrias detectar el cierre del segundo form (desde el primero) y actualizar

    en esta pregunta

    http://social.msdn.microsoft.com/Forums/es-ES/winformses/thread/78fb3a0e-49e5-4cdb-b5f1-51684420101d

    se plantea lo mismo luego de cerrar el form2 (hijo) se detecta esto en el evento formclosing para actualziar el grid del priemr form

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 22 de noviembre de 2012 14:08