2012-03-16 9 views
6

Ho un controllo XtraGrid in un Windows Form, legata ad un oggetto fissato come segue:XtraGrid non rinfrescante dopo gli aggiornamenti alla sua fonte di dati

clientListBindingSource.DataSource = ObjectContext.Clients; 

Dove ObjectContext è un contesto EF normale. Per modificare un cliente, passo Client oggetto della riga selezionata al mio modulo di modifica, e ottenere salvare le modifiche come segue:

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(); 
} 

Variazioni faccio sotto forma di modifica persistono al DB, ma ho provato diversi modi di cercando di ottenere l'aggiornamento della griglia, e si rifiuta testardamente fino a quando non riavvio l'applicazione. Che cosa sto facendo di sbagliato?

risposta

6

provare a reimpostare l'origine dati dopo aver apportato modifiche in questo modo:

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

che funziona, grazie, ma è un cervello po' morto per me che non altro, compreso il ' Il metodo RefreshDataSource' funziona. I controlli DevExpress sembrano essere un po 'indietro con le origini dati ED. – ProfK

+0

A mio parere, un gridview non fa altro che visualizzare i dati. Un programmatore dovrebbe dirgli che l'origine dati è cambiata, in modo che possa visualizzare nuovamente i dati. Non so se DevExpress ha questa funzione o no, o dovremmo farlo manualmente. – jaselg

2

ho trovato che una chiamata a

Grid.RefreshDataSource(); 

opere come previsto se si sono vincolanti il ​​DataSource tramite il codice in questo modo:

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

Dove "DataSource" è la struttura di griglia essendo vincolato, presentatore è l'oggetto essendo b ound e SummaryDetailList è un elenco di oggetti che appartengono a Presenter.

+0

In uno dei nostri progetti questo non funziona (è una griglia con sotto colonne. AddRemove normalmente funziona eccetto - l'utente fa clic su qualcosa da ordinare - successivamente gridview non aggiorna più ...) – Offler

0

vi consiglio di provare questo

clientListBindingSource.ResetBindings(False); 

E 'dovrebbe aggiornare la fonte vincolante in tal modo l'aggiornamento della griglia