2012-03-16 12 views
6

I tienen un control de XtraGrid en un formulario ventanas, unido a un objeto establecer como sigue:XtraGrid no refrescante después de cambios a su origen de datos

clientListBindingSource.DataSource = ObjectContext.Clients; 

Dónde ObjectContext es un contexto EF normal. Para editar un cliente, paso objeto de la fila seleccionada Client a mi formulario de edición, y obtener guardar los cambios de la siguiente manera:

var rows = mainView.GetSelectedRows(); 
var editClient = ((Client)mainView.GetRow(rows[0])); 
var editForm = new ClientDetailForm 
        { 
         EditClient = editClient 
        }; 
var result = editForm.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    ObjectContext.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); 
    clientGrid.RefreshDataSource(); 
} 

Los cambios que hago en el formulario de edición persisten con el PP, pero he intentado varias formas de tratando de actualizar la grilla, y se niega obstinadamente hasta que reinicie la aplicación. ¿Qué estoy haciendo mal?

Respuesta

6

intentar restablecer tu fuente de datos después de realizar cambios de esta manera:

yourGrid.DataSource = null; // you might not need this, but it's my practice 
yourGrid.DataSource = data_source; 
+3

que funciona, gracias, pero es un poco cerebro muerto para mí que ninguna otra cosa, incluyendo el ' El método RefreshDataSource', funciona. Los controles DevExpress parecen retrasarse un poco con las fuentes de datos ED. – ProfK

+0

En mi opinión, una vista en cuadrícula no hace nada más que mostrar los datos. Un programador debe decirle que la fuente de datos ha cambiado, de modo que pueda volver a mostrar los datos. No sé si DevExpress tiene esta característica o no, o deberíamos hacerlo manualmente. – jaselg

2

He encontrado que una llamada a

Grid.RefreshDataSource(); 

funciona como espera si va a enlazar el origen de datos a través de código de este modo:

IndicationSummaryGrid.DataBindings.Add("DataSource", Presenter, "SummaryDetailList", true, DataSourceUpdateMode.OnPropertyChanged); 

Donde "origen de datos" es la propiedad rejilla estar ligado, presentador es el objeto siendo b ound y SummaryDetailList es una lista de objetos que pertenecen a Presenter.

+0

En uno de nuestros proyectos, esto no funciona (es una cuadrícula con subcolumnas. AddRemove normalmente funciona excepto que el usuario hace clic en algo para ordenar, luego gridview no actualiza más ...) – Offler

0

sugiero que pruebe este

clientListBindingSource.ResetBindings(False); 

Se supone que actualizar el origen de enlace con ello la actualización de la red de

Cuestiones relacionadas