【新特性速递】表格行分组(续)

FineUIPro/Mvc/Core的下个版本(v7.0.0),我们会为表格新增行分组功能,这也是很多用户期待的功能。

上一篇文章,我们介绍了行分组的基本特性,今天就来讲解一下表格行分组的合计。

基本用法

开启行分组合计,我们需要如下两个步骤:

  • 为表格增加 RowGroupSummary=”true” 属性
  • 为需要开启行分组合计的行增加 RowGroupSummaryText、RowGroupSummaryType 或者RowGroupSummaryRendererFunction属性

下面来看一个示例的页面效果:

【新特性速递】表格行分组(续)

表格标签定义:

html;gutter:true; ......</p> <pre><code> RowGroupSummaryType对应几个预定义的合计方式: ;gutter:true;
public enum SummaryType
{
///
/// 未定义
///
Undefined,
///
/// 总和
///
Sum,
///
/// 最小值
///
Min,
///
/// 最大值
///
Max,
///
/// 个数
///
Count,
///
/// 平均
///
Avg
}

当然,我们也可以通过 RowGroupSummaryRendererFunction 属性,来自定义合计。

多行分组合计

要开启多行分组合计,我们需要设置表格的RowGroupSummaryRowCount。

此时表格列就不能用 RowGroupSummaryText、RowGroupSummaryType两个属性了,因为它们无从告知每一行合计的结果,只能使用自定义合计的方式。

来看个示例效果(这个示例不仅启用多行分组合计,而且启用了表格多行合计):

【新特性速递】表格行分组(续)

表格的标签定义:

html;gutter:true; ......</p> <pre><code> 标签有点复杂,是因为同时开启了行分组和表格的多行合计,可以从命名上区分: 表格的多行合计: * EnableSummary="true" * SummaryPosition="Bottom" * SummaryRowCount="3" 行分组的多行合计: * EnableRowGroup="true" * DataRowGroupField="EntranceYear" * RowGroupSummary="true" * RowGroupSummaryRowCount="3" 同理,表格列的合计渲染函数命名也遵循类似的原则: 表格列的合计渲染函数: * SummaryRendererFunction="majorSummaryRenderer" 行分组的合计渲染函数: * RowGroupSummaryRendererFunction="majorRowGroupSummaryRenderer" 下面来看下合计渲染函数的客户端实现: 表格列: ;gutter:true;
function majorSummaryRenderer(summaryRowIndex) {
if (summaryRowIndex == 0) {
return "最小值:";
} else if (summaryRowIndex == 1) {
return "最大值:";
} else if (summaryRowIndex == 2) {
return "平均值:";
}
}

function chineseScoreSummaryRenderer(summaryRowIndex) {
var grid1 = this, result;

if (summaryRowIndex == 0) {
result = grid1.calcSummaryValue(‘ChineseScore’, ‘min’);
} else if (summaryRowIndex == 1) {
result = grid1.calcSummaryValue(‘ChineseScore’, ‘max’);
} else if (summaryRowIndex == 2) {
result = grid1.calcSummaryValue(‘ChineseScore’, ‘avg’);
}
return result;
}

function mathScoreSummaryRenderer(summaryRowIndex) {
var grid1 = this, result;

if (summaryRowIndex == 0) {
result = grid1.calcSummaryValue(‘MathScore’, ‘min’);
} else if (summaryRowIndex == 1) {
result = grid1.calcSummaryValue(‘MathScore’, ‘max’);
} else if (summaryRowIndex == 2) {
result = grid1.calcSummaryValue(‘MathScore’, ‘avg’);
}
return result;
}

行分组:

javascript;gutter:true; function majorRowGroupSummaryRenderer(summaryRowIndex) { if (summaryRowIndex == 0) { return "最小值:"; } else if (summaryRowIndex == 1) { return "最大值:"; } else if (summaryRowIndex == 2) { return "平均值:"; } }</p> <p>function chineseScoreRowGroupSummaryRenderer(summaryRowIndex, rowGroupData) { var grid1 = this, result;</p> <pre><code>if (summaryRowIndex == 0) { result = grid1.calcSummaryValue('ChineseScore', 'min', rowGroupData); } else if (summaryRowIndex == 1) { result = grid1.calcSummaryValue('ChineseScore', 'max', rowGroupData); } else if (summaryRowIndex == 2) { result = grid1.calcSummaryValue('ChineseScore', 'avg', rowGroupData); } return result; </code></pre> <p>}</p> <p>function mathScoreRowGroupSummaryRenderer(summaryRowIndex, rowGroupData) { var grid1 = this, result;</p> <pre><code>if (summaryRowIndex == 0) { result = grid1.calcSummaryValue('MathScore', 'min', rowGroupData); } else if (summaryRowIndex == 1) { result = grid1.calcSummaryValue('MathScore', 'max', rowGroupData); } else if (summaryRowIndex == 2) { result = grid1.calcSummaryValue('MathScore', 'avg', rowGroupData); } return result; </code></pre> <p>}

其中 calcSummaryValue 是由FineUI提供的一个计算合计的内置函数。当然,复杂的逻辑你也可以自己弄,合计行的数据你都能拿到。

行分组与分页排序

由于行分组是在客户端实现的,所以我们可以很容易的加上数据库分页和排序。

注意:启用行分组时,不能使用内存分页。

下面看下示例效果(由于代码只是简单的组合两者,就不在此赘述了):

【新特性速递】表格行分组(续)

欢迎入伙:https://fineui.com/fans/

三石出品,必属精品

Original: https://www.cnblogs.com/sanshi/p/13498082.html
Author: 三生石上(FineUI控件)
Title: 【新特性速递】表格行分组(续)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553376/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • hdu5299 Circles Game

    Problem Description There are n circles on a infinitely large table.With every two circle,…

    技术杂谈 2023年5月31日
    077
  • 构建基于React18的电子表格程序

    背景 2022年3月29日,React正式发布18.0.0。本次升级内容包括开箱即用的改进,如自动批处理、新的API(如startTransition)和支持Suspense 的流…

    技术杂谈 2023年5月31日
    0115
  • 接口测试

    :配置windows中特定应用的抓包(默认抓取不到) :添加备注信息 :重新发起指定请求 :清空指定会话内容 :断点放行 :模式切换 :相应数据解码 :抓取指定进程发出的请求 :关…

    技术杂谈 2023年7月25日
    069
  • Chromium 命名规范

    Chromium 代码中的文件数不胜数,读懂文件名可以帮我们快速定位某个文件的用途。好的文件命名方式应该是自解释的,能够实现 “望文生义” 的效果。不过 C…

    技术杂谈 2023年5月31日
    076
  • iotop【转】

    一、简介: iotop:一款类似top的I/O监控工具,只显示正在产生I/O的进程或线程。 iotop监控的主要项: 进程/线程的I/O的读写带宽 进程/线程swapin的耗时占比…

    技术杂谈 2023年5月30日
    080
  • 一步一步编译最新版Apache Doris 0.15版本的详细过程

    Apache Doris 于 2021 年 11 月 29 日迎来了 0.15.0 Release 版本的正式发布!有 99 位 Contributor 为 Apache Dori…

    技术杂谈 2023年6月1日
    096
  • django Middleware

    Middleware简介 Middleware是一个轻量级的,全局性质的Django请求/响应处理钩子框架。所谓钩子框架是指在request请求到达Django之后,views视图…

    技术杂谈 2023年7月10日
    062
  • MySQL数据库规范

    MySQL数据库规范 前言 今天我们来聊一聊MySQL数据库常见的一些建议设计规范,参考阿里的《JAVA开发手册泰山版》,我们简单挑出几处进行简单分析和回顾复习,如果有不正确或者不…

    技术杂谈 2023年6月21日
    095
  • springBoot使用注解Aop实现日志模块

    我们在日常业务操作中需要记录很多日志,可以在我们需要的方法中对日志进行保存操作,但是对业务代码入侵性大。使用切面针对控制类进行处理灵活度不高,因此我们可以使用自定义注解来针对方法进…

    技术杂谈 2023年7月24日
    094
  • WTL中最简单的实现窗口拖动的方法(转)

    目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用…

    技术杂谈 2023年5月31日
    091
  • iOS 使用第三方字体

    在iOS的项目开发中经常遇到需要使用一些自定义的字体文件,比如 &#x4EFF;&#x5B8B;_GB2312、 &#x534E;&#x5EB7;&…

    技术杂谈 2023年5月30日
    067
  • 社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴……)

    个人情况 学历:二本 工作年限:2 年半 面试结果:拿到了字节、拼多多、美团、滴滴、欧科云链….等公司的offer 面试准备 复习 你信我,真学习还得看书,看书能让你的…

    技术杂谈 2023年7月25日
    0112
  • 非手机数字化应用

    NFC是Near Field Communication的简称,该技术可以使通信两端使用13.56-MHz的频段进行短距离(10mm)的快速通信。我这个标题一定要加上非手机,因为国…

    技术杂谈 2023年7月11日
    0104
  • phpcms安装

    【快速安装开始】 下载解压phpcms,复制安装文件到站点目录”/opt/html”里,给予权限(官网无法访问了,所以下载地址需自行寻找上传) cd /us…

    技术杂谈 2023年7月11日
    083
  • Python超好用的命令行界面实现工具,我保证你肯定不知道…

    前言 Click 是一个简洁好用的Python模块,它能用尽量少的代码实现漂亮的命令行界面。它不仅开箱即用、还能支持高度自定义的配 置。 官方文档:https://click.pa…

    技术杂谈 2023年6月21日
    0115
  • test

    test posted @2016-09-01 15:19 mengfanrong 阅读(193 ) 评论() 编辑 Original: https://www.cnblogs.c…

    技术杂谈 2023年5月31日
    0209
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球