AABBbaby

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

看界面组件DevExpress WPF如何处理频繁的数据更新

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。

您可以使用以下技术当中的一种来优化GridControl中的数据更新:

  • 加速个别更新
  • 批量处理更新

DevExpress WPF v22.1正式版下载

加速个别更新

ChunkList

ChunkList<T> 适合处理大型集合更新的应用程序,如果您执行多个迭代数据源项的操作(例如,汇总计算、数据排序和过滤操作),ChunkList 的工作速度可能比普通集合慢。

我们建议您在以下情况下使用 ChunkList:

  • 数据源至少包含 10,000 个元素。
  • 一个更新操作会影响集合中的一批元素。

优化摘要

GridControl 重新计算所有记录以更新数据摘要,要优化更新操作,请将GridControl.OptimizeSummaryCalculation属性设置为 true。在这种情况下,GridControl仅计算更改记录的值并根据这些值更新数据摘要,因此性能不依赖于记录数。

我们建议您在以下情况下优化汇总计算:

批量处理更新

数据整型操作允许您对数据进行排序、过滤和分组,以及计算摘要,发生数据源更改时,GridControl会执行这些操作。要将多个更新作为单个操作处理,请使用以下方法:

锁定更新

当您在 GridControl 中锁定更新时,用户无法在 UI 中执行任何数据操作。 您可以处理数据更新,然后将所有更改应用到 GridControl。

我们建议您在以下情况下锁定 GridControl 更新:

  • 您的数据源包含少于 100,000 个元素。 如果数据源太大,可能会出现可见的 UI 滞后。
  • 一个批次会累积多个更新。

请按照以下步骤应用此技术:

  1. 调用BeginDataUpdate方法来锁定 GridControl 中的数据更新。
  2. 处理多个更新。
  3. 调用EndDataUpdate方法来应用更改。

下面的代码示例演示了如何防止 GridControl 在发生多个数据更改时频繁更新。

C#

public void PerformUpdates() {
gridControl.BeginDataUpdate();
// Perform massive data updates...
gridControl.EndDataUpdate();
}

如果使用 TreeListView,GridControl 会根据数据结构类型处理分层更新:

  • Self-Referential:GridControl 忽略来自数据源的通知并在EndDataUpdate调用后重新创建节点。
  • Hierarchical:GridControl 处理来自数据源的通知,并在BeginDataUpdateEndDataUpdate方法调用之间的每次更改后更新节点层次结构。

无论数据结构类型如何,调用TreeListView.BeginDataUpdate(bool recreateNodesOnEndDataUpdateOnly)和 TreeListView.EndDataUpdate方法来管理分层更新。 例如,如果数据源中的每次更改都会显着影响节点层次结构,则您可能希望在 EndDataUpdate 调用之后只更新一次。 为此,请将 true 作为参数传递给TreeListView.BeginDataUpdate(bool recreateNodesOnEndDataUpdateOnly) 方法。

手动刷新

AllowLiveDataShaping属性设置为 false 来允许 GridControl 在数据更改时忽略数据整型操作,调用RefreshData 方法来显示控件中的所有更改。

我们建议您在以下情况下手动强制更新 GridControl:

  • 您将数据存储在List<T> 集合中。
  • 您的数据源包含少于 100,000 个元素。 如果您的源太大,可能会出现可见的 UI 滞后。
  • 您可以按需刷新 GridControl,但不是在每次更改数据源之后刷新。

定时器自动刷新

如果您的数据频繁更改(例如,每毫秒),则 GridControl 没有足够的时间来更新其布局,您可以对计时器执行更新操作。实现一个自定义集合,阻止来自数据源的更改通知并在指定的时间间隔内复制数据,此集合中的更改会触发 GridControl 更新。

我们建议您在以下情况下更新计时器上的数据:

  • 您的数据源包含少于 100,000 个元素。 如果您的源太大并且出现明显的 UI 滞后,您可以增加间隔。
  • 您定期刷新 GridControl,但不是在数据源中的每次更改之后。

DevExpress技术交流群6:600715373      欢迎一起进群讨论

更多DevExpress线上公开课、中文教程资讯请上中文网获取

posted on   AABBbaby  阅读(99)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-09-23 什么是Telerik应用生命周期?如何使用MSI或ZIP安装
2021-09-23 WinForm应用界面开发 - 如何使用第三方库以各种格式导出控件
2020-09-23 Web界面开发工具——看Kendo UI如何实现网格最佳性能
2020-09-23 WPF界面解决方案首选工具,DevExpress一招搞定使用DXGrid和eXpress持久对象实现CRUD操作
2019-09-23 构建的Web应用界面不够好看?快试试最新的Kendo UI R3 2019
2019-09-23 还不会使用MyEclipse的Breadcrumb导航功能?再不看你就OUT了
点击右上角即可分享
微信分享提示