我是否可以暂时阻止手动更改DataGridView以更新基础数据源?

时间:2010-06-18 15:26:13

标签: .net winforms data-binding datagridview bindingsource

我试图找到另一个像这样的问题,因为它似乎确实可能是之前被问过的东西;但是我找不到它。

基本上,我有一个DataGridView,它绑定到BindingList<T>。我知道,一般来说,数据绑定非常好,并节省了很多(我们 - 开发人员)的时间。但是,此网格存在严重的性能问题,这个问题非常大。

根据以往的经验,我相信通过在计时器上DataGridView手动更新只是可见单元而不是实现INotifyPropertyChanged,可以大大提高性能(这不是一个可行的选项,因为此网格中的许多值每秒都会改变几十次)或调用Refresh。但是存在一个问题:如果我逐个手动更新网格中的单元格,则每次更新都会触发数据绑定对象的相应属性的set,这会导致性能大幅下降。

实际上没有必要进行所有这些set调用,因为我放入网格单元格中的值是直接从 那些属性中检索的(所以我基​​本上都是读取一个值,然后将其写回自身)。

如果我可以暂时禁用DataGridView的此功能,那将是很好的:暂时关闭负责根据网格更新更新基础数据源的功能。然后,当我手动更新它时,重新打开该功能,以便用户的更新影响数据源。

我尝试使用BindingSourceDataSource属性设置为BindingList<T>并调用SuspendBinding / ResumeBinding;但这似乎不起作用。 set电话仍在继续。

有没有办法完成我要去的地方?我完全走错了路吗?

1 个答案:

答案 0 :(得分:1)

我真的没有直接回答你的问题的知识,但我在前一段时间找到了一篇MSDN文章,讨论了一种只在需要时加载/更新行的方法。

http://msdn.microsoft.com/en-us/library/ms171624.aspx

这可能是一个可行的解决方案,或者它可能会激励您制定另一种方法。

如果没有,希望有人能够很快给你一个真正的答案o .-