永洪社区

标题: 获取表格没值状态 [打印本页]

作者: yhdata_lian    时间: 2023-11-10 10:00
标题: 获取表格没值状态
本帖最后由 yhdata_lian 于 2024-3-4 18:26 编辑

我希望实现当表格没值的时候就不显示该表格,目前用自由表格做的话,始终最上面用常量写的标题都是显示的,背后脚本写了maxrows,但未实现效果脚本是这样写的,哪里有问题吗
if (图表4.maxRows<=1 )
{图表4.visible=false}
else {
图表4.visible=true
}




作者: 美滋滋    时间: 2023-11-10 10:00
本帖最后由 美滋滋 于 2023-11-10 10:54 编辑

自由是表格编辑模式下,至少是两行吧?一行是抬头,一行是来绑定数据的。所以即使绑定数据那行没有数据,那么用getData('图表1',DATA).size()方法得到的行数也至少是2。如果绑定的数据只有一行,那么得到的也是2.所以如果得到的行数是2的时候,其实用这个方法是无法判定到底是有值还是没值的。所以改良一下:
try {
var a = getData("图表1",DATA);
    if (a.get(1,0) == null || a.get(1,0) == "") {
        图表1.visible = false
    }else{
        图表1.visible = true
    }
} catch(e) {
        图表1.visible = false
}
以上脚本默认第一行是自由表格的抬头。

作者: yhdata_lyaa    时间: 2023-11-10 10:14
debug看看图表4.maxRows的值是多少呢
作者: yhdata_lian    时间: 2023-11-10 10:22
yhdata_lyaa 发表于 2023-11-10 10:14
debug看看图表4.maxRows的值是多少呢

debug(图表4.maxrow)的话,提示为0,但是实际上自由表是有值的
作者: yhdata_lyaa    时间: 2023-11-10 10:25
yhdata_lian 发表于 2023-11-10 10:22
debug(图表4.maxrow)的话,提示为0,但是实际上自由表是有值的

函数说明
设置表格的最大行数。
Table1.maxRows=100;//默认是0,自动设定表的行数。
作者: yhdata_lyaa    时间: 2023-11-10 10:26
获取表格行数,试试这个脚本
getData('图表1',DATA).size()
作者: yhdata_lian    时间: 2023-11-10 10:39
yhdata_lyaa 发表于 2023-11-10 10:26
获取表格行数,试试这个脚本
getData('图表1',DATA).size()

但这样还是没有实现我要的效果,目前是图表4该自由表加了过滤条件后,没有值显示,但是表头(常量)那一行存在,那么应该是行数<=1的时候,该表不显示,但我现在写成>1,才不显示该表
if (getData('图表4',DATA).size()>1 )
{图表4.visible=false}
else {
图表4.visible=true
}
作者: yhdata_lyaa    时间: 2023-11-10 10:42
我这边可以实现呢,脚本写在变化时运行。自由表一共有几行呢,截图看看绑定情况
作者: yhdata_lian    时间: 2023-11-10 10:48
yhdata_lyaa 发表于 2023-11-10 10:42
我这边可以实现呢,脚本写在变化时运行。自由表一共有几行呢,截图看看绑定情况 ...

写在报告级的变化时运行是吗?目前我这边是写在自由表格的装载时运行
作者: yhdata_lyaa    时间: 2023-11-10 10:50
yhdata_lian 发表于 2023-11-10 10:48
写在报告级的变化时运行是吗?目前我这边是写在自由表格的装载时运行

报告的变化时运行
作者: yhdata_lian    时间: 2023-11-10 10:56
yhdata_lyaa 发表于 2023-11-10 10:50
报告的变化时运行

你好,图片我已经放到正文里了。第一张图的第一张表是绑定的过滤条件是序号为1,第一张图的第二张表是绑定过滤条件序号为2,因为没有为2的,所以第二张表应该不显示才对,但目前报告级脚本写了如第二张图所示脚本,出现的结果是图3
作者: 美滋滋    时间: 2023-11-10 10:59
其实我是不建议这种不显示表格的,因为表格即使不显示,但是表格所占的位置已经是固定了。如果不显示的话,报告中空了一大片位置,也是很难看的。除非你用脚本把所有组件的显示位置重置一遍,那样的话就比较麻烦了。
作者: yhdata_lian    时间: 2023-11-10 10:59
美滋滋 发表于 2023-11-10 10:52
自由是表格编辑模式下,至少是两行吧?一行是抬头,一行是来绑定数据的。所以即使绑定数据那行没有数据,那 ...

你好,我改成了如下代码,放在报告级脚本中,但是显示的和我正文图片第三张效果一样,图表24为第一张表应该显示,图表25为第二张表,应该不显示
代码如下:
try {
var a = getData("图表24",DATA);
    if (a.get(1,0) == null || a.get(1,0) == "") {
        图表24.visible = false
    }else{
        图表24.visible = true
    }
} catch(e) {
        图表24.visible = false
}

try {
var b = getData("图表24",DATA);
    if (b.get(1,0) == null || b.get(1,0) == "") {
        图表25.visible = false
    }else{
        图表25.visible = true
    }
} catch(e) {
        图表25.visible = false
}
作者: 美滋滋    时间: 2023-11-10 11:02
try {
var b = getData("图表24",DATA);
debug(b.get(1,0))
    if (b.get(1,0) == null || b.get(1,0) == "") {
        图表25.visible = false
    }else{
        图表25.visible = true
    }
} catch(e) {
        图表25.visible = false
}

加一行DEBUG信息,看看得到的值是什么
作者: yhdata_lian    时间: 2023-11-10 11:02
美滋滋 发表于 2023-11-10 10:59
其实我是不建议这种不显示表格的,因为表格即使不显示,但是表格所占的位置已经是固定了。如果不显示的话, ...

是这样子的,我在数据集里写了rank,每个筛选器下最后最多会存在三个产品编码,那么对这三个产品编码分别做一张表,设置是否显示就可以了,因为产品肯定按产品序号123依次下来
作者: 美滋滋    时间: 2023-11-10 11:03
yhdata_lian 发表于 2023-11-10 10:59
你好,我改成了如下代码,放在报告级脚本中,但是显示的和我正文图片第三张效果一样,图表24为第一张表应 ...

找到错误了,你应该写成  var b = getData("图表25",DATA);
作者: yhdata_lyaa    时间: 2023-11-10 11:04
yhdata_lian 发表于 2023-11-10 10:56
你好,图片我已经放到正文里了。第一张图的第一张表是绑定的过滤条件是序号为1,第一张图的第二张表是绑 ...

加上空白的两行,图片看起来一共有4行了,判断要小于等于4了,或者按照楼上的方法试试

作者: 美滋滋    时间: 2023-11-10 11:06
yhdata_lyaa 发表于 2023-11-10 11:04
加上空白的两行,图片看起来一共有4行了,判断要小于等于4了,或者按照楼上的方法试试
...

我上面说过了,判断SIZE是不严谨的。因为如果等于2的时候,你不知道是没有数据还是说只有一行数据
作者: yhdata_lian    时间: 2023-11-10 11:07
美滋滋 发表于 2023-11-10 11:03
找到错误了,你应该写成  var b = getData("图表25",DATA);

是的是的,发现了,实现我要的效果了,还想请教一下,
catch(e) 这个是什么意思呢,以及 if (b.get(1,0) == null || b.get(1,0) == "")这一段是判断自由表除表头外的行数是吗
作者: yhdata_lyaa    时间: 2023-11-10 11:19
美滋滋 发表于 2023-11-10 11:06
我上面说过了,判断SIZE是不严谨的。因为如果等于2的时候,你不知道是没有数据还是说只有一行数据 ...

严谨
作者: 美滋滋    时间: 2023-11-10 11:55
yhdata_lyaa 发表于 2023-11-10 11:19
严谨

做程序逻辑一定要严谨,大多数的BUG都是由于不严谨的逻辑而导致的  
作者: yhdata_lyaa    时间: 2023-11-10 13:23
美滋滋 发表于 2023-11-10 11:55
做程序逻辑一定要严谨,大多数的BUG都是由于不严谨的逻辑而导致的   ...

大神,学习




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