DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
获取DevExpress v22.2正式版下载(Q技术交流:674691612)
什么是服务器模式?
在常规数据绑定模式中,数据感知控件一次加载整个数据集,在数据量大的情况下,这会显著降低应用程序启动速度,并消耗大量内存。应用程序的整体性能取决于客户的设备,数据整形操作(排序、分组或过滤)可能会导致瓶颈。
处理此问题的基本方法是实现分页,即将数据集分割为离散的部分,并显示Previous、页码和Next按钮来在记录之间切换。DevExpress Data Grid提供了一个更好的解决方案,允许开发人员根据需要在数据部分之间导航,无需任何导航按钮,并在服务器端执行所有数据整形操作 - Server Modes(服务器模式)。
“server modes”包括两种独立的模式:
常规(同步)服务器模式锁定GUI,并且在检索数据时不响应最终用户的操作;
Instant Feedback(即时反馈模式)(异步服务器模式)在后台线程中加载数据,以便GUI在进程中保持响应,GridLookUpEdit控件不支持此模式。
重要提示:由于在这两种模式下,数据整形操作(筛选、分组、排序等)都是在服务器端执行的,所以要确保服务器支持这些操作。
功能限制和细节
在服务器模式中,网格控件 (GridControl, GridLookUpEdit 和 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’定制的数据源,因此为控件选择以下数据源中的一种。
注意,开发人员应该绑定到没有BindingSource组件的数据。否则所有数据都将加载到内存中,服务器模式将变得无用。
无限滚动 - 虚拟(基于事件)服务器模式
除了两种“经典的”数据按需网格模式(服务器模式和即时反馈)外,您还可以使用基于事件的VirtualServerModeSource组件来小部分手动加载大数据量。这种技术称为无限滚动,它成功地替代了其他供应商的数据感知控件中使用的数据分页。