2009-07-21 18 views
9

¿Cómo obtengo un WGD DataGrid para guardar los cambios en la base de datos?¿Cómo obtengo un WGD DataGrid para guardar los cambios de nuevo en la base de datos?

He limitado mi control DataGrid a un objeto DataTable, y llené esa tabla con una consulta SELECT muy simple que recupera cierta información básica. Los datos aparecen bien en el control.

Pero cuando uso el control para editar los datos, los cambios no se vuelven a enviar al DB.

¿Alguien sabe lo que me estoy perdiendo?

Respuesta

16

Actualizaciones escénicas

Cuando el usuario modifica los datos de los clientes dentro de la cuadrícula de datos, el límite DataTable en memoria se actualiza en consecuencia. Sin embargo, estas actualizaciones no se escriben automáticamente en la base de datos. Depende del desarrollador decidir cuándo se escriben los cambios en el DataTable en la base de datos, según los requisitos de la aplicación. Por ejemplo, en algunos casos, es posible que desee enviar un lote de cambios mediante el botón "Enviar", o puede desear que se actualice la base de datos a medida que el usuario confirma cada edición de fila. Para admitir esto, las filas que contiene DataTable tienen una propiedad RowState que indica si contienen cambios que deben sincronizarse con la base de datos. El proceso de sincronización se logra fácilmente a través del método de actualización de TableAdapter. url: WPF DataGrid examples

El siguiente ejemplo muestra cómo los eventos RowChanged y RowDeleted pueden ser manejados de manera que los cambios en el estado DataTable se escriben en la base de datos cada vez que el usuario cambia consecutivas:

public CustomerDataProvider() 
{ 
    NorthwindDataSet dataset = new NorthwindDataSet(); 

    adapter = new CustomersTableAdapter(); 
    adapter.Fill(dataset.Customers); 

    dataset.Customers.CustomersRowChanged += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
    dataset.Customers.CustomersRowDeleted += 
     new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified); 
} 

void CustomersRowModified(object sender, NorthwindDataSet.CustomersRowChangeEvent e) 
{ 
    adapter.Update(dataset.Customers); 
} 
+0

Este es muy útil. ¡Gracias! – Giffyguy

Cuestiones relacionadas