XtraGrid не обновляется после обновления источника данных - PullRequest
6 голосов
/ 16 марта 2012

У меня есть элемент управления XtraGrid в форме окна, связанный с объектом, установленным следующим образом:

clientListBindingSource.DataSource = ObjectContext.Clients;

Где ObjectContext - это обычный EF-контекст. Чтобы отредактировать клиента, я передаю объект Client выбранной строки в форму редактирования и получаю изменения сохранения следующим образом:

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

Изменения, которые я делаю в форме редактирования сохраняются в БД, но я попробовал несколько способов, пытаясь получить сетку для обновления, и она упорно отказывается, пока не перезапустить приложение. Что я делаю не так?

Ответы [ 3 ]

6 голосов
/ 16 марта 2012

Попробуйте сбросить источник данных после внесения следующих изменений:

yourGrid.DataSource = null; // you might not need this, but it's my practice
yourGrid.DataSource = data_source;
2 голосов
/ 28 августа 2012

Я обнаружил, что вызов

Grid.RefreshDataSource();

работает должным образом, если вы связываете DataSource с помощью кода, подобного следующему:

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

Где "DataSource" - свойство сетки, являющеесясвязанный, Presenter - это связанный объект, а SummaryDetailList - список объектов, принадлежащих Presenter.

0 голосов
/ 20 мая 2015

Я предлагаю вам попробовать это

clientListBindingSource.ResetBindings(False);

Предполагается обновить источник привязки, тем самым обновляя сетку

...