wpf devexpress 自定义统计
总计统计和分组统计包含预定义总计函数。这些函数允许你计算如下:
数据列的数量(Count)
最大和最小值(Max和Min)
总计和平均值(Sum和Average)
处理GridControl.CustomSummary 事件或者使用 GridControl.CustomSummaryCommand 属性去应用自定义规则计算统计。自定义统计允许如下操作:
计算统计对于记录和遇到的特殊类型
调用多重数据字段在计算中
实现复杂统计函数(对于,这个流行偏离标准和等等)
如果GridControl.View 属性设置TreeListView,使用TreeListView.CustomSummary 事件或者TreeListView.CustomSummaryCommand属性
常规信息
手动计算统计:
1、创建统计内容和设置SummaryItemBase.SummaryType 属性到SummaryItemType.Custom
2、创建命令使用自定义算法去计算值
3、绑定命令到GridControl.CustomSummaryCommand 属性
GridControl 计算如下:
初始化
这个GridControl执行CustomSummary命令设置SummaryArgs.SummaryProcess 属性去 Start。在这个阶段,你可以初始化统计值(例如,重置内部计数器)。
计算
GridControl 执行CustomSummary 命令多次,在视图和分组对于每一个数据列。SummaryArgs.SummaryProcess 属性设置计算。在这个阶段,可以计算统计。
结束
GridControl执行CustomSummary命令设置SummaryArgs.SummaryProcess 属性去结束。在这个阶段,你可以分配计算统计在 SummaryArgs.TotalValue 属性。
忽略Calculation 阶段和计算一个自定义统计在初始化和结束阶段,设置SummaryArgs.TotalValueReady 属性去true在初始化阶段。忽略计算阶段和开始结束阶段。
计算自定义统计
如下代码例子计算总计空单元格数字在特定行:

<dxg:GridControl ItemsSource="{Binding Items}"CustomSummaryCommand="{Binding CustomSummaryCommand}"><dxg:GridControl.Columns><dxg:GridColumn FieldName="Text" GroupIndex="0" /><dxg:GridColumn FieldName="Number" /></dxg:GridControl.Columns><dxg:GridControl.View><dxg:TableView AutoWidth="True"NavigationStyle="Cell"TotalSummaryPosition="Bottom" /></dxg:GridControl.View><dxg:GridControl.TotalSummary><dxg:GridSummaryItem DisplayFormat="Total empty cells count: {0}"FieldName="Number"SummaryType="Custom" /></dxg:GridControl.TotalSummary><dxg:GridControl.GroupSummary><dxg:GridSummaryItem DisplayFormat="Group empty cells count: {0}"FieldName="Number"SummaryType="Custom" /></dxg:GridControl.GroupSummary>
</dxg:GridControl>
using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;
using DevExpress.Mvvm.Xpf;
// ...
public class MainViewModel : ViewModelBase {
// ...[Command]public void CustomSummary(RowSummaryArgs args) {if(args.SummaryItem.PropertyName != "Number")return;if(args.SummaryProcess == SummaryProcess.Start) {args.TotalValue = 0;} if(args.SummaryProcess == SummaryProcess.Calculate) {if(IsEmptyCell(args.FieldValue))args.TotalValue = (int)args.TotalValue + 1;}}bool IsEmptyCell(object fieldValue) {return !((int?)fieldValue).HasValue;}
}
计算自定义统计基于预定义统计
GridControl计算自定义统计在之后预定义统计(Count,Sum,Min,和等等)。作为结果,你可以使用预定义统计值去计算自定义统计。
1、创建自定义统计
2、处理GridControl.CustomSummary / TreeListView.CustomSummary 事件
3、在初始化阶段,设置 e.TotalValueReady 属性为true去忽略计算阶段
4、使用DataControlBase.GetTotalSummaryValue方法去获得预定义统计在结束阶段。

<dxg:GridControl ...CustomSummary="grid_CustomSummary"><dxg:GridColumn FieldName="ProductName"/><dxg:GridColumn FieldName="UnitPrice"/><dxg:GridColumn FieldName="Quantity"/><dxg:GridControl.TotalSummary><dxg:GridSummaryItem x:Name="avgPrice" FieldName="UnitPrice" SummaryType="Average"/><dxg:GridSummaryItem x:Name="avgQuantity" FieldName="Quantity" SummaryType="Average"/><dxg:GridSummaryItem ShowInColumn="ProductName" SummaryType="Custom" DisplayFormat="{}Average order: {0:c}"/></dxg:GridControl.TotalSummary><dxg:GridControl.View><dxg:TableView ...TotalSummaryPosition="Bottom"></dxg:TableView></dxg:GridControl.View>
</dxg:GridControl>
private void grid_CustomSummary(object sender, DevExpress.Data.CustomSummaryEventArgs e) {if (e.IsTotalSummary) {switch (e.SummaryProcess) {case DevExpress.Data.CustomSummaryProcess.Start:e.TotalValueReady = true;break;case DevExpress.Data.CustomSummaryProcess.Finalize:var averagePrice = (decimal)grid.GetTotalSummaryValue(avgPrice);var averageQuantity = (decimal)grid.GetTotalSummaryValue(avgQuantity);e.TotalValue = averagePrice * averageQuantity;break;}}
}
可以使用e.GetGroupSummary 方法去获得预定义分组统计值。
指定是否去计算统计
CustomSummaryExists 事件或CustomSummaryExistsCommand 属性允许指定和统计应用计算和显示
如下计算分组统计只有对于顶级分组等级:

<dxg:GridControl x:Name="grid"ItemsSource="{Binding AccountList}"CustomSummaryExistsCommand="{Binding CustomSummaryExistsCommand}"><!-- ... --><dxg:GridControl.GroupSummary><dxg:GridSummaryItem FieldName="Age" SummaryType="Min"/><dxg:GridSummaryItem FieldName="Age" SummaryType="Max"/></dxg:GridControl.GroupSummary>
</dxg:GridControl>
using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;
using DevExpress.Mvvm.Xpf;
// ...
public class MainViewModel : ViewModelBase {
// ...[Command]public void CustomSummaryExistsCommand(RowSummaryExistsArgs args) {args.Exists = args.GroupPath[0].GroupLevel == 0;}
}
相关文章:
wpf devexpress 自定义统计
总计统计和分组统计包含预定义总计函数。这些函数允许你计算如下: 数据列的数量(Count) 最大和最小值(Max和Min) 总计和平均值(Sum和Average) 处理GridControl.CustomSummary 事件或者使用 GridControl.CustomSumm…...
【Flink】Flink任务缺失Jobmanager日志的问题排查
Flink任务缺失Jobmanager日志的问题排查 问题不是大问题,不是什么代码级别的高深问题,也没有影响任务运行,纯粹因为人员粗心导致,记录一下排查的过程。 问题描述 一个生产环境的奇怪问题,环境是flink1.15.0 on yarn…...
教程:使用 Keras 优化神经网络
一、介绍 在 我 之前的文章中,我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章,我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了,据我所知,处理…...
什么是PWA(Progressive Web App)?它有哪些特点和优势?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
深入理解MongoDB的CRUD操作
MongoDB,一个广受欢迎的NoSQL数据库,以其灵活的文档模型、强大的查询能力和易于扩展的特性而著称。对于初学者和经验丰富的开发人员来说,熟练掌握MongoDB的增删改查(CRUD)操作是至关重要的。本博客将深入探讨如何在Mon…...
使用量子玻尔兹曼机推进机器学习:新范式
一、说明 量子玻尔兹曼机(QBM)是量子物理学和机器学习的前沿融合。通过利用叠加和纠缠等量子特性的力量,QBM 可以同时探索多个解决方案,使其异常擅长解决复杂问题。它使用量子位(量子计算的构建模块)以传统…...
优化|优化求解器自动调参
原文信息:MindOpt Tuner: Boost the Performance of Numerical Software by Automatic Parameter Tuning 作者:王孟昌 (达摩院决策智能实验室MindOpt团队成员) 一个算法开发者,可能会幻想进入这样的境界:算…...
vite vue3配置eslint和prettier以及sass
准备 教程 安装eslint 官网 vue-eslint ts-eslint 安装eslint yarn add eslint -D生成配置文件 npx eslint --init安装其他插件 yarn add -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin…...
C语言第入门——第十六课
目录 一、分治策略与递归 二、递归 1.求解n的阶乘 2.输入整数、倒序输出 3.输入整数、正序输出 4.计算第n位Fibonacci数列 编辑5.无序整数数组打印 6.找到对应数组下标 一、分治策略与递归 在我们遇到大问题的时候,我们的正确做法是将它分解成小问题&a…...
IntelliJ IDEA 快捷键 Windows 版本
前言:常用快捷键 IntelliJ IDEA编辑器大受欢迎的原因之一是它的智能提示和丰富的快捷键,在日常开发中熟练的使用快捷键会大大提升开发的效率,本篇文章就笔者日常开发中的总结,把常用的、好用的快捷键做一个列表,方便…...
重生之我必去大厂java开发
JavaDreamer 重生之我必去大厂java开发。主线任务进入大厂java开发。 author :developer_zxh GitHub | Gitee 本项目记录了本人从中国科学院大学硕士研究生开始,如何进入大工 java 开发岗位的学习记录(目前在校未求职,加入后此状…...
2023年中职“网络安全“—Web 渗透测试②
2023年中职“网络安全“—Web 渗透测试② Web 渗透测试任务环境说明:1.访问http://靶机IP/web1/,获取flag值,Flag格式为flag{xxx};2.访问http://靶机IP/web2/,获取flag值,Flag格式为flag{xxx};3.访问http://靶机IP/web…...
【整顿C盘】pycharm、chrome等软件,缓存移动
C盘爆了,特来找一下巨大的软件缓存,特此记录,跟随的各大教程,和自己的体会 一、爆炸家族JetBrains 这个适用于pycharm、idea、webstorm等等,只要是JetBrains家的,2020版本以上,都是一样的方法 p…...
C# using语句使用介绍
在C#中,using语句有两种主要用途:一是引入命名空间,二是提供一种简便的方式来处理资源的清理(主要用于实现了 IDisposable 接口的对象)。 引入命名空间:using 语句用于引入命名空间,从而可以在代…...
leetcode (力扣) 201. 数字范围按位与 (位运算)
文章目录 题目描述思路分析完整代码 题目描述 给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 输入:left 5, right 7 输出…...
Flutter笔记: 在Flutter应用中使用SQLite数据库
Flutter笔记 在Flutter应用中使用SQLite数据库(基于sqflite) 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/q…...
OpenAI GPT5计划泄露
OpenAI的首席执行官萨姆奥特曼在最近接受《金融时报》的专访时,分享了OpenAI未来发展的一些新动向。此外,他还透露了关于即将到来的GPT-5模型以及公司对AGI的长期目标的一些细节。 奥特曼指出: 1.OpenAI正在开发GPT-5,一种更先进的…...
【面试经典150 | 数学】Pow(x, n)
文章目录 写在前面Tag题目来源题目解读解题思路方法一:快速幂-递归方法二:快速幂-迭代 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主…...
封装比较好的登录页面
封装比较好的登录页面 只在setup()函数中写流程,将逻辑代码抽离出来 <template><div class"wrapper"><img class"wrapper__img" srchttp://www.dell-lee.com/imgs/vue3/user.png /><div class"wrapper__input"&…...
如何使用Flask request对象处理请求
在 Flask 中,request 对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍 request 对象的常用方法以及如何在 Flask 应用程序中使用它。 1. 获取请求方法 首先,让我们看一…...
从供热管道泄漏模拟出发,聊聊Fluent中那些容易被忽略的‘粘性模型’选择细节
从供热管道泄漏模拟看Fluent粘性模型选择的工程智慧 供热管道泄漏事故的数值模拟一直是市政工程中的难点——当高温高压流体从破损处喷涌而出时,流动形态会经历从管道内湍流到自由射流的复杂转变。这种多尺度流动对湍流模型的选择提出了严苛考验,而大多数…...
革新性硬件控制工具:OmenSuperHub实现游戏本性能优化与完全掌控
革新性硬件控制工具:OmenSuperHub实现游戏本性能优化与完全掌控 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普暗影精灵系列游戏本设计的开源硬件控制工具,提供完全离线的…...
RouterOS L2TP服务器搭建与安全优化指南
1. L2TP协议基础与RouterOS适配性 L2TP协议全称为Layer 2 Tunneling Protocol,是一种工作在OSI模型第二层的隧道协议。我第一次接触这个协议是在2015年为企业部署远程办公系统时,当时发现它相比PPTP有着明显的安全优势。简单来说,L2TP就像是在…...
基于Python的项目申报系统毕设源码
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于Python的项目申报系统,以满足现代项目管理中对项目申报流程的自动化、高效化和规范化的需求。具体研究目的如下&#x…...
Oracle数据库架构入门概述
本文分为四个部分简单概述 一、入门概述 二、数据库实例简述 三、数据库物理存储和逻辑存储结构简述 四、网络体系结构概述 入门概述 Oracle 数据库服务器包括一个数据库和至少一个数据库实例 (通常是指只有一个实例)。 因为实例和数据库关联紧密&#x…...
LEDPatternLib:非阻塞LED动画库设计与嵌入式实践
1. 项目概述LEDPatternLib 是一款面向嵌入式 LED 动画控制的轻量级、模块化 Arduino 库,专为资源受限的微控制器平台设计。其核心目标并非替代底层驱动,而是构建在成熟硬件抽象层之上的非阻塞(non-blocking)模式动画调度框架。该库…...
OpenClaw性能调优:Qwen3-32B镜像的批处理与并发控制
OpenClaw性能调优:Qwen3-32B镜像的批处理与并发控制 1. 为什么需要性能调优 当我第一次在RTX4090D上部署Qwen3-32B模型并接入OpenClaw时,本以为24GB显存足以应对各种任务。但现实很快给了我一记重拳——当我尝试批量处理100个文档时,系统不…...
PCS双向储能变流器Buck - Boost闭环控制仿真复现之旅
PCS双向储能变流器Buck-Boost闭环控制仿真【复现】 复现参考文献:《储能电站变流器设计与仿真研究_尹世界》 三相PWM变流器控制:采用电压外环、电流内环双闭环PI控制,电压环稳定直流测电容电压700V,电网电压和电容电流前馈&#x…...
无需编程!DouyinLiveWebFetcher让运营人员轻松实现抖音直播弹幕实时采集
无需编程!DouyinLiveWebFetcher让运营人员轻松实现抖音直播弹幕实时采集 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 如…...
视觉语言模型VLM高效部署:基于TensorRT-LLM的C++推理实践
1. 视觉语言模型VLM与TensorRT-LLM的黄金组合 视觉语言模型(VLM)这两年真是火得不行,它能让AI同时理解图片和文字,像人类一样看图说话。但实际部署时,很多团队都会遇到性能瓶颈——特别是用Python直接推理时࿰…...
