历史版本6 :扩展后排序重新编号 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

在对报表进行扩展后排序(按「牛奶」销量排序)之后,若直接使用单元格插入公式 seq() 或者 &cell 这两种方法获取序号,序号的顺序是乱序的,如何让它变成正常的排序呢?如下图所示:

1610098522863526.png

1.2 解决思路

方法一:设置条件属性新值。

方法二:设置公式形态。

方法三:添加加载结束事件,利用 JavaScript 代码解决。

2. 示例编辑

2.1 数据准备

新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 销量

Snag_ae55ac4.png

2.2 报表设计

1)设计如下图所示表格,设置单元格 A2 左父格为 B2 ,并且插入公式:seq() , 生成序号。

设置单元格扩展方向:C1 为横向扩展,B2、C2 为纵向扩展。

1610200220248672.png

2)未设置扩展后排序时,保存报表,点击「分页预览」,可以看到序号顺序正常,效果如下图所示:

Snag_1115ff2a.png

2.3 设置扩展后排序

1)选中 B2 单元格,添加扩展后排序,公式为:C2{C1 = "牛奶"},即按照「牛奶」一列的销量值进行升序排列,步骤如下图所示:

Snag_1121c0bf.png

2)保存报表,点击「分页预览」,表格已按「牛奶」列升序排序,但序号一列被打乱,如下图所示:

1610200336939551.png

2.4 方法一(条件属性)

选中序号所在单元格 A2,删除原本的公式,添加「条件属性>新值」,选择公式类型,值可以是 seq(),row()-1,&cell 。

 row()-1:row() 返回当前行位置,- 1 指的是当前行位置 -1,数值根据具体情况而定。

&cell:cell 指的是添加扩展后排序的单元格,本例为 B2 单元格。

由于任何情况下都需要生效,不需要添加判定条件。步骤如下图所示:

1610204313449205.png

2.5 方法二(公式形态)

选中序号所在单元格 A2,选择「单元格属性>形态>公式形态」,值同样可以为 seq(),row()-1,&cell 。

注1:公式形态实际是将实际值与显示值转换,所以序号所在单元格本身必须有值。

注2:当序号所在单元格原本的值为 seq() 时,公式形态的值需要设置为 seq(1),否则序号会累计。

如下图所示:

Snag_11748ac7.png

2.6 方法三(加载结束事件)

点击菜单栏「模板>模板 Web 属性」,选择「分页预览设置」,选择「为改模板单独设置」,在事件设置中添加「加载结束」事件,输入 JavaScript 代码,步骤如下图所示:

1610206365919969.png

JavaScript 代码如下:

$(function(){
     var len=$('.x-table tr').length;
     for(var i=1;i<len;i++){
//table中的行数是从0开始算的,下面代码意思是第二行第一个单元格编号是1
     $('.x-table tr:eq('+i+') td:first').text(i);
     }
})

1610206365495409.png

3. 模板下载编辑

已完成模板可参见:

%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\扩展后排序重新编号方法一.cpt

%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\扩展后排序重新编号方法二.cpt

%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\扩展后排序重新编号方法三.cpt

点击下载模板:

扩展后排序重新编号方法一.cpt

扩展后排序重新编号方法二.cpt

扩展后排序重新编号方法三.cpt