Список привязок 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();

}
Другие вопросы по тегам