百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

界面控件DevExpress WinForm的先进技术——服务器和即时反馈模式

bigegpt 2024-12-02 15:23 4 浏览

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

DevExpress WinForms Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网

什么是服务器模式?

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

处理此问题的基本方法是实现分页,即将数据集分割为离散的部分,并显示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组件来小部分手动加载大数据量。这种技术称为无限滚动,它成功地替代了其他供应商的数据感知控件中使用的数据分页。

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...