我有一个带有Devexpress GridControl的Windows表单,其数据源绑定到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的行为?
答案 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();
}