我有一个带有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提供刷新事件,这有什么原因吗?
发布于 2019-09-03 09:58:47
一旦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?
发布于 2018-11-28 21:32:55
在设置数据源后,可以使用PopulateColumns()查看网格视图。
public Form1()
{
this.gridControl1.DataSource =
FleetPreference.ManufacturerList; // doesn't auto-update grid
gridView1.PopulateColumns();
}https://stackoverflow.com/questions/53255976
复制相似问题