永洪社区

标题: 自由式表格,设置行高度 [打印本页]

作者: yhdata_e142Rc1c    时间: 2021-10-14 10:15
标题: 自由式表格,设置行高度
自由式表格,设置行高度的脚本是啥?类似于“var loc = new Locator(["c-0"], COL, DETAIL);
//c-0代表第一列,c-1代表第二列。。。
自由式表格1.setColWidth(loc, 190)
//c是column的意思。c-0,不是减号,是指向,”杠“的意思。指的是第一列。就是先取得第一列的对象,然后将第一列的宽度设置为190
这样的脚本代码,能给发一下吗?

作者: 美滋滋    时间: 2021-10-14 10:15
好吧,没权限导入那没办法了,我给你截图吧。
一共两部分脚本,一个是报表装载运行时的脚本,一个是格间计算的脚本。具体如下图

作者: 环环    时间: 2021-10-14 10:22
var loc=new Locator(["r-1"],ROW,DETAIL);
自由式表格1.setRowHeight(loc,0)
第一行的r-1的1改成你隐藏的那一行的行数-1
如果隐藏的是第2行,就写成r-1如果隐藏的是第三行就写成r-2
作者: 美滋滋    时间: 2021-10-14 10:26
COL代表列,ROW代表行,自己琢磨一下就出来了
作者: 美滋滋    时间: 2021-10-14 10:27
本帖最后由 lijie 于 2021-10-14 10:29 编辑

另外,不要用脚本对自由式表格设置行高,除非你想整体变化,如果只是想单独对某一行进行行高设置的话,是无法实现的。
目前永洪产品脚本设定自由式表格行高是针对设计模式的行进行的调整。你说这是产品BUG也说的过去,你说这个不是产品BUG,也能说的过去。总之,最好不要用脚本对自由式表格进行行高控制,因为可能无法实现你真正的需求。

作者: yhdata_e142Rc1c    时间: 2021-10-14 10:31
lijie 发表于 2021-10-14 10:27
另外,不要用脚本对自由式表格设置行高,除非你想整体变化,如果只是想单独对某一行进行行高设置的话,是无 ...

无法单独设置某一行的高度吗?有没有其他办法,根据条件判断然后设置某一行的高度?
作者: 环环    时间: 2021-10-14 10:33
不行,定位的是元数据模式下的,如果元数据模式下是绑的一个字段,那个字段所在所有行都不可见。可以不用行高来设置,做单元格过滤就行
作者: yhdata_e142Rc1c    时间: 2021-10-14 10:36
永洪Tech-chunyu 发表于 2021-10-14 10:33
不行,定位的是元数据模式下的,如果元数据模式下是绑的一个字段,那个字段所在所有行都不可见。可以不用行 ...

单元格过滤后等于剔除掉了不符合条件的数据,但是我这个表格里边有一个“排名计算”,剔除以后排名就错误了。这个有没有办法,不剔除数据,隐藏掉某些行?
作者: 美滋滋    时间: 2021-10-14 10:41
yhdata_e142Rc1c 发表于 2021-10-14 10:36
单元格过滤后等于剔除掉了不符合条件的数据,但是我这个表格里边有一个“排名计算”,剔除以后排名就错误 ...

目前为止,我只能告诉你 NO
作者: 美滋滋    时间: 2021-10-14 10:42
对了,突然想到,其实你可以自己用脚本排序,然后用单元格过滤掉你不想展示的数据行
作者: yhdata_e142Rc1c    时间: 2021-10-14 10:50
lijie 发表于 2021-10-14 10:42
对了,突然想到,其实你可以自己用脚本排序,然后用单元格过滤掉你不想展示的数据行 ...

用脚本计算出排名,然后再通过单元格过滤掉数据吗?
作者: yhdata_e142Rc1c    时间: 2021-10-14 10:54
yhdata_e142Rc1c 发表于 2021-10-14 10:50
用脚本计算出排名,然后再通过单元格过滤掉数据吗?

这个需要有个前提,就是程序先执行了脚本,在执行单元格过滤。这个咱控制不了吧?
作者: 美滋滋    时间: 2021-10-14 11:02
本帖最后由 lijie 于 2021-10-14 11:05 编辑

我简单做了一个范例,看看图片,是不是你要的效果
左边的图是原始数据,没有排名,右边的图通过下拉选择类型,排名展示的是每行数据在所有类型中的总排名



作者: yhdata_e142Rc1c    时间: 2021-10-14 11:03
yhdata_e142Rc1c 发表于 2021-10-14 10:50
用脚本计算出排名,然后再通过单元格过滤掉数据吗?

对的,比方说在单元格过滤前,先通过脚本计算出每条数据,每一项指标的分数排名,这样排名就是对的了,然后在过滤掉不需要展示的数据。现在的关键是是否可行
作者: 美滋滋    时间: 2021-10-14 11:06
yhdata_e142Rc1c 发表于 2021-10-14 11:03
对的,比方说在单元格过滤前,先通过脚本计算出每条数据,每一项指标的分数排名,这样排名就是对的了,然 ...

看看我上面的截图是不是你想要的
作者: yhdata_e142Rc1c    时间: 2021-10-14 11:08
lijie 发表于 2021-10-14 11:06
看看我上面的截图是不是你想要的

我根据您的图片示例,我尝试一下
作者: 美滋滋    时间: 2021-10-14 11:12
yhdata_e142Rc1c 发表于 2021-10-14 11:08
我根据您的图片示例,我尝试一下

我在问你,我的截图是不是你需要的?
我还没告诉你我具体怎么做的呢。。。你怎么尝试?
作者: yhdata_e142Rc1c    时间: 2021-10-14 11:16
这种不行,全选的时候,排名19,只选择衡水的时候排名1,这个排名是格间计算的。过滤以后等于提出掉数据,在排的名的,名次就不对了
作者: yhdata_e142Rc1c    时间: 2021-10-14 11:17
lijie 发表于 2021-10-14 11:12
我在问你,我的截图是不是你需要的?
我还没告诉你我具体怎么做的呢。。。你怎么尝试? ...

是需要这种,您是怎么实现的?我尝试了一下,不行
作者: 美滋滋    时间: 2021-10-14 11:22
用脚本获取数据集的数据,然后自己计算排名,并在格间计算中赋值,我把我那个范例导出,你自己导入到你那边看看吧。

作者: yhdata_e142Rc1c    时间: 2021-10-14 11:26
lijie 发表于 2021-10-14 11:22
用脚本获取数据集的数据,然后自己计算排名,并在格间计算中赋值,我把我那个范例导出,你自己导入到你那边 ...

好的,我试一下
作者: 美滋滋    时间: 2021-10-14 11:29
本帖最后由 lijie 于 2021-10-14 11:30 编辑

获取数据集的数据时,我这边的范例是EXCEL数据集,你那边是SQL数据集,所以要修改一下获取数据集的类型。
我报表加载时获取了数据集的数据,并放入了参数中。如下:
  var tmp_list = execute(this, EXCEL, "功能范例/排名测试", false);
  param['tmp_arr1'] = tmp_list!=null ? toArray(tmp_list,"总量") : [];
你要修改一下获取数据集的类型,如下:
  var tmp_list = execute(this, SQL, "你的数据集的路径", false);
  param['tmp_arr1'] = tmp_list!=null ? toArray(tmp_list,"要做排名计算的字段名") : [];

然后就是格间计算时,自己用脚本做排名并展示了。最后祝你成功,就帮你到这里了,哈哈



作者: yhdata_e142Rc1c    时间: 2021-10-14 11:29
lijie 发表于 2021-10-14 11:22
用脚本获取数据集的数据,然后自己计算排名,并在格间计算中赋值,我把我那个范例导出,你自己导入到你那边 ...

您计算排名的代码脚本能发一下吗?jar包我没导入过啊
作者: 美滋滋    时间: 2021-10-14 11:31
。。。 数据都有了,弄个排名还不能搞定吗?最简单的冒泡法啊!!
作者: 美滋滋    时间: 2021-10-14 11:32
更多 -> 管理系统 -> 资源部署
把我那个jar包导入到你那边就可以了
作者: yhdata_e142Rc1c    时间: 2021-10-14 11:41
lijie 发表于 2021-10-14 11:32
更多 -> 管理系统 -> 资源部署
把我那个jar包导入到你那边就可以了

没写入权限,导不进去。发一下,关键脚本吧




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4