2024年终活动

DevExpress控件使用交流,DevExpress中国社区Dev联系电话 联系电话:023-68661681

界面控件DevExpress WinForm先进技术:大数据源 - 服务器和即时反馈模式

来源:   发布时间:2023-01-28   浏览:840次

DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

获取DevExpress v22.2正式版下载

什么是服务器模式?

在常规数据绑定模式中,数据感知控件一次加载整个数据集,在数据量大的情况下,这会显著降低应用程序启动速度,并消耗大量内存。应用程序的整体性能取决于客户的设备,数据整形操作(排序、分组或过滤)可能会导致瓶颈。

处理此问题的基本方法是实现分页,即将数据集分割为离散的部分,并显示Previous、页码和Next按钮来在记录之间切换。DevExpress Data Grid提供了一个更好的解决方案,允许开发人员根据需要在数据部分之间导航,无需任何导航按钮,并在服务器端执行所有数据整形操作 - Server Modes(服务器模式)。

“server modes”包括两种独立的模式:

  • 常规(同步)服务器模式锁定GUI,并且在检索数据时不响应最终用户的操作;
  • Instant Feedback(即时反馈模式)(异步服务器模式)在后台线程中加载数据,以便GUI在进程中保持响应,GridLookUpEdit控件不支持此模式。

重要提示:由于在这两种模式下,数据整形操作(筛选、分组、排序等)都是在服务器端执行的,所以要确保服务器支持这些操作。

功能限制和细节

在服务器模式中,网格控件 (GridControlGridLookUpEdit 和 SearchLookUpEdit)不能同时访问整个绑定数据。这对在常规绑定模式下仍然可用的网格功能施加了某些限制。有关服务器模式下不支持/不推荐的特性的信息,请参见下面。

不受支持的功能

  • 使用BindingSource进行数据绑定。
  • Master-detail模式。
  • 当数据分组时,从Grid控件中添加/删除记录。
  • 按显示值排序、分组和过滤数据,替代按编辑值(参见下面的说明)。
  • 在Find Panel 中对数据类型既不是字符串也不是数字的列进行数据搜索。
  • 使用ColumnView. CustomRowFilter事件筛选行。
  • 在Instant Feedback(即时反馈)模式中将自定义项添加到过滤器下拉列表中。
  • 使用ColumnView.CustomColumnSort事件自定义排序。
  • 使用GridView.CustomColumnGroup事件自定义分组。
  • 所有服务器感知数据源中的合并分组,除了XPServerCollectionSource和XPInstantFeedbackSource。
  • 绑定WcfInstantFeedbackSource和WcfServerModeSource时的组间隔(GridColumn.GroupInterval)。
  • 使用GridView. CustomSummaryCalculate事件自定义摘要是有限制的:当CustomSummaryProcess参数返回" Finalize "时,该事件只触发一次。
  • 对ColumnView. CustomUnboundColumnData事件提供值的未绑定列进行排序、分组、过滤和汇总计算,使用表达式填充的未绑定列仍然支持这些特性(参见GridColumn.UnboundExpression)。
  • 在对数据进行分组或排序时,保留聚焦行的位置。
  • 在对数据进行排序、分组或筛选时保留行选择。
  • 当开发人员使用WcfInstantFeedbackSource和WcfServerModeSource时复合键。
  • 使用即时反馈集合时绑定到嵌套属性,要从嵌套表/对象中聚合数据,可以使用XPInstantFeedbackView或projections_ *与基于linq的即时反馈集合(例如,LinqInstantFeedbackSource和EntityInstantFeedbackSource)。

注意:查找列可以绑定到一个数据字段,但显示来自另一个数据字段的文本。将FieldNameSortGroup属性设置为带有文本值的数据字段,以便在服务器数据绑定模式中根据显示文本对查找列值进行排序。

一般的细节

  • 当您通过查找面板进行搜索时,网格总是将搜索字符串转换为小写。因此,当Grid控件绑定到区分大小写的数据源时,数据搜索结果不包含包含大写文本的目标条目。您可以通过使用不区分大小写的数据源来克服这个问题。
  • 在Instant Feedback(即使反馈)模式下,最大可见数据组数限制为10000个。
  • 服务器模式数据源可以在更改基础数据库后重新加载。例如,已知的场景包括但不限于:由外部进程引起的数据库更改、由同一进程中的代码引起的更改、就地编辑等。
  • 应该避免涉及操作所有Data Grid行的操作,因为处理每一行都会向SQL服务器发送一个单独的查询。因此执行这样的操作可能会导致严重的性能问题和UI冻结,对数据网格性能影响最大的操作是展开所有组行(GridOptionsBehavior. AutoExpandAllGroups, GridView.ExpandAllGroups) 和选择所有数据记录(GridView.SelectAll)。
服务器模式数据源

要为数据感知控件启用特定的服务器模式,需要使用适当的数据源。开发人员可以使用eXpress持久对象(XPO)库提供的数据源,或者使用专门为‘LINQ to SQL Classes’定制的数据源,因此为控件选择以下数据源中的一种。

界面控件DevExpress WinForm先进技术:大数据源 - 服务器和即时反馈模式

注意,开发人员应该绑定到没有BindingSource组件的数据。否则所有数据都将加载到内存中,服务器模式将变得无用。

无限滚动 - 虚拟(基于事件)服务器模式

除了两种“经典的”数据按需网格模式(服务器模式和即时反馈)外,您还可以使用基于事件的VirtualServerModeSource组件来小部分手动加载大数据量。这种技术称为无限滚动,它成功地替代了其他供应商的数据感知控件中使用的数据分页。

界面控件DevExpress WinForm先进技术:大数据源 - 服务器和即时反馈模式

DevExpress技术交流群7:674691612      欢迎一起进群讨论

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

DevExpress v22.2全新发布
本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/3530.html

相关产品: DevExpress Universal Subscription,

扫码咨询
电话咨询
023-68661681
返回
顶部