【发布时间】:2012-02-28 17:17:10
【问题描述】:
我有一个绑定到BindingSource 的网格(它又绑定到List<T>)。当我更改底层List<T> 数据然后调用时:
bs.ResetBindings(false);
网格不会更新。但如果我打电话:
bs.ResetBindings(true);
它确实会更新。我的代码现在可以工作,但我仍然不明白为什么这是必要的。根据MSDNResetBindings的参数应该设置为:
true 如果数据架构已更改; false 如果只有值发生了变化
我当然没有更改任何数据架构...那我为什么需要 true ?
【问题讨论】:
-
你用的是什么网格?我的猜测是它处理 ListChangedType.Reset 通知的方式可能存在错误。
-
我正在使用 DevExpress 的 XtraGrid
-
您是否可以在 DevExpress 代码上使用 ILSpy 等反编译器来查看其代码是否存在错误?另外,您是否可以尝试使用 BindingList
而不是将 List 传递给 BindingSource 并查看是否可行。 -
我使用 DevExpress 效果很好。我建议您为网格控件提供绑定源,也为网格视图提供绑定源。如果有必要,以编程方式将数据模型提供给绑定源。不要使用隐式视图,只需创建您的自定义视图。如果没有按预期工作,请在官方网站上搜索帮助。
-
@JoelFan 我也有同样的问题。我有一个调用 bs.ResetBindings(false); 的刷新按钮;当我更改 SQL Server Db 表中的值并单击刷新按钮时,更改的值在使用“false”或“true”的任何一种情况下都不会显示。但是,如果我重新加载表单,则会显示新值。我正在使用来自 .NET 的 DataGridView(不是来自 Devexpress)。它适用于this user。
标签: c# data-binding .net-4.0