0

我有一个带有 Devexpress GridControl 的 Windows 窗体,其数据源绑定到FleetPreference.ManufacturerListwhere ManufacturerListis aBindingList<ManufacturerItem>并且FleetPreference是窗体上的公共属性。

IE

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 提供刷新事件?

4

2 回答 2

0

一旦 gridcontrol 绑定数据源,它似乎不会更新新数据。我一直在为类似的问题而苦苦挣扎。

在我更新数据源的情况下,我尝试清除视图然后绑定新的视图,如下所示。

我希望它也适用于你。

gridControl1.BeginUpdate();

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

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

如何在运行时将新数据源正确分配给网格?

于 2019-09-03T01:58:46.697 回答
-1

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

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

}
于 2018-11-28T13:32:54.543 回答