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;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 22.04 LTS ffmpeg mp4 gif 添加图片水印

ffmpeg编译安装6.0.1&#xff0c;参考 Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg &#xff1b;解决gif转mp4转换后无法播放问题-CSDN博客 准备一个logo MP4添加水印 ffmpeg -i 2.mp4 -vf "movielogo.png[watermark];[in][watermark]overlayx10:y10[out]&…

给出n个学生的考试成绩表,每条信息由姓名与分数组成,试设计一算法:

1.给出n个学生的考试成绩表&#xff0c;每条信息由姓名与分数组成&#xff0c;试设计一个算法: (1)按分数高低次序&#xff0c;打印出每个学生在考试中获得的名次&#xff0c;分数相同的为同一名次。 (2)按名次列出每个学生的姓名与分数。 学生的考试成绩通过键盘输入数据建立…

RK3588平台开发系列讲解(项目篇)嵌入式AI的学习步骤

文章目录 一、嵌入式AI的学习步骤1.1、入门Linux1.2、入门AI 二、瑞芯微嵌入式AI2.1、瑞芯微的嵌入式AI关键词2.2、AI模型部署流程 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2; 本篇将给大家介绍什么是嵌入式AI。 一、嵌入…

[Jenkins] 物理机 安装 Jenkins

这里介绍Linux CentOS系统直接Yum 安装 Jenkins&#xff0c;不同系统之间类似&#xff0c;操作命令差异&#xff0c;如&#xff1a;Ubuntu用apt&#xff1b; 0、安装 Jenkins Jenkins是一个基于Java语言开发的持续构建工具平台&#xff0c;主要用于持续、自动的构建/测试你的软…

【Python语言】字典的使用方法总结

目录 1、基本知识 1.1 定义 1.2 定义字典变量 1.3 定义空字典 2、字典的常用方法介绍 2.1 基于key获取value 2.2 嵌套字典 2.3 新增元素 2.4 更新元素 2.5 删除元素 2.6 清空字典 2.7 获取全部的key 2.8 遍历字典 2.9 统计字典内的元素数量 3、 字典常用操作总结…

控制器宕机之SBC相关

简介: 本文主要以FS6500系列展开介绍&#xff0c;介绍深度安全故障(深度睡眠)状态的转换&#xff0c;以及相关寄存器值的变化过程 1.控制器什么时候会因为SBC停止工作? 窗口看门狗未及时喂狗达到故障计数最大值芯片进入某种(deep fail state)模式或LP-DFS模式或LP-Sleep模式…

苹果电脑录屏快捷键,让你成为录屏达人

“苹果电脑录屏好麻烦呀&#xff0c;操作步骤很繁琐&#xff0c;有人知道苹果电脑怎么快速录屏呀&#xff0c;要是有快捷键就更好了&#xff0c;大家知道苹果电脑有录屏快捷键吗&#xff1f;谢谢啦&#xff01;” 苹果电脑以其直观的用户界面和卓越的性能而闻名&#xff0c;而…

防范Java多线程陷阱:探秘ABA问题的起因及解决之道!

一、概念 CAS&#xff08;Compare and Swap&#xff09;是一种乐观锁机制&#xff0c;它是一种基于硬件指令实现的原子操作&#xff0c;可以在不使用传统互斥锁的情况下&#xff0c;保证多线程对共享变量的安全访问。在Java中&#xff0c;我们可以使用Atomic类和AtomicReferenc…

使用 Python 的基于边缘和基于区域的分割

引言 在本文中&#xff0c;我们将重点讨论基于边缘和基于区域的分割技术。在讨论细节之前&#xff0c;我们需要了解细分它们分别是什么以及它们是如何工作的。 分割 图像分割是一种将数字图像分割成各种图像对象的技术。 区域中的每个像素(图像对象)在某些属性(如颜色、亮度…

Evil靶场

Evil 1.主机发现 使用命令探测存活主机&#xff0c;80.139是kali的地址&#xff0c;所以靶机地址就是80.134 fping -gaq 192.168.80.0/242.端口扫描 开放80&#xff0c;22端口 nmap -Pn -sV -p- -A 192.168.80.1343.信息收集 访问web界面 路径扫描 gobuster dir -u http…

FDTD自定义材料

官方原文档链接 该文档内容摘自原文档及相关链接 从txt导入材料数据 各项同性材料的3Dmaterials数据 txt文件中应包含以下三列。第一列为波长或频率&#xff1b;第二列为折射率或介电常数实部&#xff1b;第三列为折射率或介电常数虚部。 420 5.08894 0.237724 440 4.78…

基于 HTTP Digest 与 CURL 以及 Requests 的兼容性问题:解决方案与推测原因

在使用Python库requests进行HTTP Digest认证时&#xff0c;我遇到了一个问题。当我使用requests.get()函数时&#xff0c;返回了401 Unauthorized错误&#xff0c;但是当我使用cURL命令时&#xff0c;认证成功。 解决方案&#xff1a; 确认使用的requests版本&#xff1a;我首…

《QT从基础到进阶·三十一》事件循环QCoreApplication,QGuiApplication,QApplication

QCoreApplication&#xff1a;为非界面类项目提供一个事件监听循环。 QGuiApplication&#xff1a;以QtGui模块基础开发的界面项目需要应用环境。 QApplication&#xff1a;以QWidget模块基础开发的界面项目需要应用环境。 可以简单总结为&#xff0c;如果是非界面项目开发&am…

基于单片机的指纹密码锁(论文+源码)

1.系统设计 基于单片机的指纹锁控制系统设计的整体框图如图2.1所示&#xff0c;主控制模块选用单片机STC89C52单片机&#xff0c;同时还包括AT24C02存储电路&#xff0c;指纹模块&#xff0c;LCD12864液晶&#xff0c;继电器&#xff0c;矩阵键盘等硬件电路。其中指纹模块和矩…

Java面试题(每天10题)-------连载(32)

目录 设计模式篇 1、工厂方法模式&#xff08;利用创建同一接口的不同实例&#xff09;&#xff1a; 2、抽象工厂模式&#xff08;多个工厂&#xff09; 3、单例模式&#xff08;保证对象只有一个实例&#xff09; 4、原型模式&#xff08;对一个原型进行复制、克隆产生类…

强国有我助力苔花绽放 | 爱心捐赠仪式在西安顺利举办

2023年11月2日&#xff0c;由中国儿童中心、全国少年儿童“双有”主题教育活动组委会、中华少年儿童慈善救助基金会强国有我项目主办&#xff0c;陕西省青少年宫协会、陕西省妇女儿童活动中心、陕西回归儿童救助中心承办的“苔花绽放”事实无人抚养儿童关爱计划捐赠仪式在陕西回…

企业商标信息查询API的优势和应用实例分析

前言 企业商标是企业在市场中的重要标识和竞争力的体现&#xff0c;而商标信息查询API则成为了企业品牌管理的重要工具。那么&#xff0c;这篇文章将详细阐述企业商标信息查询API的优势和应用实例分析。 企业商标信息API的优势 企业商标信息查询API的优势在于它可以快速、准…

头部厂商Q3交付量环比下滑!激光雷达,现实很骨感

由于中国自主品牌车企在高阶智驾赛道上的激进策略&#xff0c;全球激光雷达行业的走势&#xff0c;也无疑受到中国市场的影响。 本周&#xff0c;禾赛科技发布2023年度三季报&#xff0c;季度激光雷达交付量为47,440台&#xff0c;同比增长125.5%&#xff0c;其中ADAS激光雷达交…

【Vue-Demo】倒计时3秒后返回首页

首页path:/ 倒计时结束后要清除计时器&#xff0c;防止内存泄漏&#xff1a; if (this.count 0) {clearInterval(this.timer); }<!-- ErrorJump.vue --> <template><h2>Error&#xff1a;找不到页面&#xff01;</h2><h4>{{ count }}S后<R…

人均年薪70万!华为项目经理具备了哪些能力

大家好&#xff0c;我是老原。 最近在逛脉脉的时候&#xff0c;看到了一位华为项目经理晒出的月收入&#xff1a;5W&#xff0c;这还是不包含每年分红奖励前的到手薪资。 按他现在的19级别&#xff0c;再加上分红奖励&#xff0c;年薪至少在70W&#xff0c;留言区羡慕声一片。…