大数据集报表点击表头排序

润乾官方在线 demo的 "交互报表" 中,有介绍 "点击表头排序" 的报表案例,该报表针对普通统计类报表。对于使用大数据集的报表,当按照此方式改造时发现排序没起作用或仅对第一页或前几页排序,后面的都没成功。

要想了解啥原因导致?就需要分析该报表的做法及知道大数据集的取数原理。

首先,来分析下在线 demo“点击报表排序”的做法。

润乾报表中实现排序的方式有两种:

1、 借助数据集 sql,即 order by …

2、 数据集函数

ds.select()

都有排序表达式 sort_exp 或 order_exp.

示例中用的是第 2 中方法,因普通报表是一次性把所有数据取到内存,所以数据集函数排序是对所有数据的排序,点表头实际就是按照某字段对所有数据排了一次序,也就没啥问题了。

接下来看大数据集报表的取数原理。

简单来说,大数据集取数原理是为了避免一次取大量数据导致内存溢出,采取了游标方式边取边呈现的方案(其中取出的数据缓存在磁盘文件,前端呈现从缓存文件读取)。

了解了该方案后,我们就清楚了,采用排序的第 2 中方案,显然只能针对一部分数据排序后呈现,并不针对所有数据。

解决方案也就明确了:要想实现大数据集报表的表头排序,必须用第 1 中方法。

改造:

1、 去掉数据集函数排序

2、 把排序调到 sql 中

3、 修改超链接

因普通报表和大数据集报表用的 jsp 不同,所以要改一下。

以 B4 为例,把 showReport.jsp 改为 showBigReport.jsp

4、 报表属性内把数据集改为大数据集

通过以上 4 步,就可以完成点击表头排序功能从普通到支持大数据集。另外如果想实现升降序切换也很简单,除了点表头传排序的字段名外,再传一个 asc 或 desc 的排序方式拼到 SQL 中即可。只要知道了原理及方案,改造起来相对轻松。

Ps:"点击表头排序" 的示例报表,在设计器 demo 内也有,可在 "交互报表" 目录获取。

原文地址:https://www.cnblogs.com/xiaohuihui-11/p/12054361.html

时间: 2024-11-07 15:49:05

大数据集报表点击表头排序的相关文章

JSP点击表头排序

table.html <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="tablesortT.js"></script> <link type="text/css" rel=&qu

DBGridEh 点击表头排序方法

方法1: (不用编程写代码) 程序中引用 单元 EhLibCDS设置DBGridEh的属性:      ColumnDefValues.Title.TitleButton = True      OptionsEh = [ghAutoSortMarking, dghMultiSortMarking]      SortLocal = True 参考: 以下翻译来自EhLib/DataService/readme.txt “在 Ehlib 的 DataService 文件夹下提供了一些可以使数据集

web中table表格点击表头排序

保证在引用jQuery之后引用之后的两个文件 <script type="text/javascript" src="<%=basePath%>/resource/js/jquery-1.8.2.min.js"></script> <link rel="stylesheet" href="<%=basePath%>/tablesorter/themes/blue/style.css&

点击表头切换升降序排序方式

需求: 在报表的实际应用中有很多客户希望可以通过点击表头切换该列数据的排序. 实现方式: 超链接结合参数以及单元格表达式来实现,具体举例如下      原表样如下 实现原理:通过点击第一行任意格的值,通过 A2 单元格表达式控制排序 1. 首先在原报表中增加三个参数如下 2. 修改 A2 单元格表达式为  =ds1.select(EMPID;${macro1}:${macro2}) 3. 给需要通过点击表头排序的的报表头单元格设置超链接表达式,比如 : 我要点击 A1 单元格对 EMPID 排序

javascript: 带分组数据的Table表头排序

如下图: 要求:点击表头排序时,"分组"及"分组明细"的数据层次关系不变 从网上找了一段常规的table排序,改了改,以满足“分组支持”,贴在这里备份 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <htm

FineReport层式报表解决大数据集展示问题攻略

本文以填报报表为例,通过分页的方式,来解决大数据集展示的问题. 实现的思想就是通过在SQL里筛选部分数据库数据,以达到浏览器可以合理的展示报表页面.(数据分段,语句我这采用的是MYSQL,如果要用其他数据库,请查看FineReport帮助文档) 步骤一:打开fenye.cpt文件. 模板界面如下 两个ds,和一部分数据,及隐藏的一行. 隐藏一行内容如下 这里数据的功能会在下面说起. ds1 里的内容如下 语句内容 SELECT * from aaa limit ${f},${p} 目的是从第${

点击表头,实现表格内容的规则排序

描述:实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序. 如图所示:  姓名  力量  敏捷  智力  赵  17  34  13  钱  15  22  16  孙  19  15  20  李  23  15  15 接下来,首先绘制该表格, 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"/>

非常强大的table根据表头排序,点击表头名称,对其内容排序

js代码: 1 /** 2 * 通过表头对表列进行排序 3 * 4 * @param sTableID 5 * 要处理的表ID<table id=''> 6 * @param iCol 7 * 字段列id eg: 0 1 2 3 ... 8 * @param sDataType 9 * 该字段数据类型 int,float,date 缺省情况下当字符串处理 10 */ 11 function orderByName(sTableID, iCol, sDataType) { 12 var oTab

数据结构实践——大数据集上排序算法性能的体验

本文是针对[数据结构基础系列(9):排序]的实践项目. [项目 - 大数据集上排序算法性能的体验] 设计一个函数,产生一个至少5万条记录的数据集合.在同一数据集上,用直接插入排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序等算法进行排序,记录所需要的时间,经过对比,得到对复杂度不同的各种算法在运行时间方面的感性认识. 提示1:这一项目需要整合多种排序算法,可以考虑先建设排序算法库,作为我们这门课算法库的收官之作: 提示2:本项目旨在获得对于复杂度不同算法的感性认识,由于数据分布