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

news2024/11/19 15:38:33

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组件来小部分手动加载大数据量。这种技术称为无限滚动,它成功地替代了其他供应商的数据感知控件中使用的数据分页。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中如何优雅的实现数字递增特效

需求 前几天项目开发中遇到一个需求,需要在数字更新时,实现其动态递增的效果 并且,在数字大于10000时,将单位进行转换,如数字大于10000时,单位从m变为万m 我们以vue中开发为例,一一实现下这两个…

多目标跟踪(MOT)入门介绍

1. 相关方向 这些是我所了解的多目标跟踪(MOT)的一些相关方向。其中单目标跟踪(VOT/SOT)、目标检测(detection)、行人重识别(Re-ID)都是非常热门的方向。而偏视频的相关方向就比较冷…

java 随机数种子 java设置随机数种子教程 java随机数种子怎么设置

我们常用的随机数生成就是Math.random();java.util.Random类有两种方式构建方式:带种子和不带种子import java.util.Random;不带种子:不带种子将会返回随机的数字,每次运行结果不一样public class RandomTest {public static void…

分享149个ASP源码,总有一款适合您

ASP源码 分享149个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 149个ASP源码下载链接:https://pan.baidu.com/s/173AhCXJgM5AvPqBw-la60w?pwdqk9j 提取码&#x…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时,经常出现标准是: 精确 自动化测试用例应该测试一件事,只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他测…

SVN服务端使用教程

前言 正式进入公司项目后,我们需要和同事进行协同开发,此时代码管理工具是必不可少的,目前常用的两款工具是:SVN 和 Git。本人因为要搭建一个自动化测试的框架,对SVN和Git都不熟悉,在调研后选择了操作更为…

组合选择器

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>组合选择器</title> <style type"text/css"> /* 多个选择器组合在一起中间用逗号","隔开就形成了组合选择器&…

销售过程管理系统对企业的好处是什么

当线索转化成销售机会后&#xff0c;要不断地跟进才有可能成交。但是这个过程时间跨度长&#xff0c;涉及人员、要素过多&#xff0c;销售过程中经常会遇到很多的问题。不少企业使用CRM销售管理系统把控销售过程。下面来说说&#xff0c;为什么企业需要销售过程管理系统? 销售…

【Mysql】X档案:Mysql 服务和Navicat客户端的安装与使用(超详细步骤)

Mysql 服务和Navicat客户端的安装与使用&#xff08;超详细步骤&#xff09;一、Mysql 安装配置1、下载安装2、配置环境变量3、设置服务自动启动二、Mysql Cli 使用1、连接 Mysql2、创建数据库3、创建数据表4、数据表操作5、删除数据库对象三、Navicat 安装1、下载2、安装3、FR…

Android 实现隐私政策提示弹窗(完整版)

android studio版本&#xff1a;2021.2.1例程名称&#xff1a;pravicydialog功能&#xff1a;1、启动app后弹窗隐私协议2、屏蔽返回键3、再次启动不再显示隐私协议。本例程的绝大部分代码来自下面链接&#xff0c;因为本人改了一些&#xff0c;增加了一些功能&#xff0c;所以不…

【计算机网络】S1P1 概念、功能、组成、分类

计算机网络概念功能组成分类概念 计算机网络&#xff0c;是互连的、自治的计算机集合。 计算机网络&#xff0c;是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。 分散的&#xf…

UOS桌面系统使用启动盘找回数据盘文件

使用启动盘找回数据盘文件1、格式化优盘2、准备一个UOS系统启动优盘3、进入UOS PE系统4、查看硬盘信息5、查看挂载信息6、查看路径信息7、找到Desktop目录8、安装器文件9、挂在数据盘10、查看是否挂载成功11、找到重要文件12、打包重要文件13、可以看到打好的tar.gz包大小为64M…

【学Vue就跟玩一样】如何正确快速使用Vue中的插槽和配置代理

一&#xff0c;插槽1.什么是插槽让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于父组件——>子组件。插槽分为三种&#xff0c;分别是默认插槽、具名插槽、作用域插槽&#xff0c;下面分别列出了如何使用这三种插槽1.1默认插槽啥是默认插槽呢&am…

Java:基于注解的Spring使用【AOP容器】

目录 第十五章 AOP前奏15.1 代理模式15.2 为什么需要代理【程序中】15.3 手动实现动态代理环境搭建15.4 手动实现动态代理关键步骤第十六章 Spring中AOP【重点】16.1 AspectJ框架【AOP框架】16.2 使用AspectJ步骤&#xff08;入门&#xff09;16.3 Spring中AOP概述16.4 Spring中…

帮助粉丝用青泥学术大数据推荐毕业论文选题(围绕 教育信息化2.0、疫情期间线上学习质量问题、Steam教育、智慧教育等突破点来抉择)

需求 本科论文水平&#xff0c;青泥学术可以起到一定帮助。 说明 我也只是读了一个学期的硕士而已&#xff0c;谈不上多高的指点&#xff0c;可能比一些人更努力一些。 所以我的学术造诣不算太高&#xff0c;不敢盲目建议。 但是君子性非异也&#xff0c;善假于物也。 我借…

软件版本的命名规则

最近在完善实验室项目的软件设计&#xff0c;涉及功能的完善和 Bug 的修复&#xff0c;为了方便管理&#xff0c;更新软件版本号是不错的方法&#xff0c;故总结了下软件版本的命名规范。 软件版本号一般由四部分组成&#xff0c;格式如&#xff1a;主版本号.子版本号.修订版本…

3、数据的录入与保存

目录 一、定义变量 1.定义变量名 2.定义变量类型 3.宽度定义 4.小数位数定义 5.变量标签定义 6.变量值标签的定义 7.缺失值的定义 8.列的定义 9.对齐的定义 10.测量的定义 11.变量角色的定义 二、数据录入 三、数据保存 四、案例录入 本文内容之前简单介绍过&am…

Codeforces Round #847 (Div. 3) A-F 冲蓝名场

想上蓝名&#xff0c;赛前1414分&#xff0c;目标蓝名。 updateupdateupdate赛后排名575757。 A. Polycarp and the Day of Pi 题意 给你一个数字判断该数字是否和圆周率的前30位匹配。 思路 发现样例有一个长度为30为的数&#xff0c;ctrlcvctrl c vctrlcv一下&#xff0c;暴…

Elasticsearc最新版8.6.1集群安装教程

一、为何要搭建 Elasticsearch 集群凡事都要讲究个为什么。在搭建集群之前&#xff0c;我们首先先问一句&#xff0c;为什么我们需要搭建集群&#xff1f;它有什么优势呢&#xff1f;&#xff08;1&#xff09;高可用性 Elasticsearch 作为一个搜索引擎&#xff0c;我们对它的基…

微信小程序——用户安全等级

有小伙伴私信说有没有微信小程序相关系列文章&#xff0c;后续会持续输出有关微信小程序相关文档接口 前言 前面几篇我们讲到了微信的文本内容、音视频、图片等内容的安全识别问题&#xff0c;这样会涉及到一个用户的安全等级的判定问题&#xff0c;怎么来识别预判用户的等级…