Devexpress绑定列表不刷新GridControl

时间:2018-11-12 04:29:33

标签: winforms data-binding devexpress devexpress-gridcontrol

我有一个带有Devexpress GridControl的Windows表单,其数据源绑定到FleetPreference.ManufacturerList,其中ManufacturerListBindingList<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的行为?

2 个答案:

答案 0 :(得分:0)

一旦gridcontrol绑定了数据源,似乎它就不会使用新数据进行更新。我一直在努力解决类似的问题。

在我要更新数据源的情况下,我尝试清除视图,然后像下面那样绑定新视图。

我希望它也对您有用。

gridControl1.BeginUpdate();

        try  
        {  
            gridView1.Columns.Clear();  
            gridControl1.DataSource = null;  
            gridControl1.DataSource = <newDataSource>;  
        }  
        finally  
        {  
            gridControl1.EndUpdate();  
        }

您可以通过以下链接查看devexpress的官方答案:

How to properly assign a new datasource to a grid at runtime?

答案 1 :(得分:-1)

设置数据源后,您可以使用PopulateColumns()来网格化视图。

public Form1() 
{
    this.gridControl1.DataSource = 
         FleetPreference.ManufacturerList; // doesn't auto-update grid
    gridView1.PopulateColumns();

}