Список привязок Devexpress не обновляет GridControl
У меня есть форма Windows с Devexpress GridControl, чей источник данных связан с FleetPreference.ManufacturerList
где ManufacturerList
это BindingList<ManufacturerItem>
а также FleetPreference
является публичной собственностью в форме.
т.е.
public class FleetPreference : FleetPreferenceBase
{
////
////
////
}
public class FleetPreferenceBase
{
public BindingList<ManufacturerItem> ManufacturerList { get; set; }
}
public class Form1
{
public FleetPreference FleetPreference { get; set; }
public BindingList<ManufacturerItem> ManufacturerList { get; set; }
public Form1()
{
this.gridControl1.DataSource =
FleetPreference.ManufacturerList; // doesn't auto-update grid
this.gridControl1.DataSource =
ManufacturerList; // does auto-update grid
}
}
При добавлении нового элемента в коллекцию путем вызова FleetPreference.ManufacturerList.AddNew()
это добавляет новый элемент в исходный список, но источник данных GridControl не обновляется.
После некоторой проверки, когда я добавляю новый BindingList<ManufacturerItem>
Свойство к форме и привязка элемента управления к этому свойству, автообновление работает как положено.
Есть ли какая-либо причина, по которой использование вложенного свойства не будет работать должным образом с автоматическим предоставлением событий обновления обратно в GridControl?
1 ответ
Как только gridcontrol связывает источник данных, кажется, что он не обновляется новыми данными. Я боролся с аналогичной проблемой.
В моем случае для обновления источника данных я попытался очистить представление, а затем привязать новый, как показано ниже.
Надеюсь, это сработает и для вас.
gridControl1.BeginUpdate();
try
{
gridView1.Columns.Clear();
gridControl1.DataSource = null;
gridControl1.DataSource = <newDataSource>;
}
finally
{
gridControl1.EndUpdate();
}
Вы можете проверить официальный ответ devexpress по ссылке ниже:
Как правильно назначить новый источник данных сетке во время выполнения?
Ты можешь использовать PopulateColumns()
в сетку просмотра после настройки источника данных.
public Form1()
{
this.gridControl1.DataSource =
FleetPreference.ManufacturerList; // doesn't auto-update grid
gridView1.PopulateColumns();
}