找文章 / 找答案
精选问答 更多内容

[可视化] 表格组件,过滤器相关

永洪tech-wisiy青铜一 显示全部楼层 发表于 2021-10-19 15:03:41
天道酬勤 发表于 2021-10-19 14:55
您好,那现在我需要拿到每个列下面的所有行的数据,是循环所有列、所有行吗?我需要拿到每个列下面的所有 ...

每个列的所有行得循环才能取
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2021-10-19 15:06:05
另外,我不太理解的是,我看你的代码,是判断得分率是否为100%,如果是100%,则不显示当前一列。但是你判断条件只判断了第一行的数据,是说只按照第一行的数据作为判断依据吗?
还是说,得分百分百的不显示,得分不是百分百的才就显示呢?比如一列中,有些行的数据得分是100%,有些行的数据得分不是100%,那么得分率为100%的则显示空,得分率不是100%的则正常显示?
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2021-10-19 15:10:37
我懂你的意思了,如果某一个指标所有数据都是满分,则该指标不显示,是这个意思吧?
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2021-10-19 15:18:09
本帖最后由 lijie 于 2021-10-19 15:19 编辑

以你图中400V监测达标率(图中第三列)为例,参照如下代码:
var visableflag = flase;
for (1=1;i<tableData2.size();i++) {
    if(tableData2.get(i,2)  / 15 != 1) {
         visableflag = true
    }
}
if (!visableflag) {
    var loc = new Locator(["c-2"], COL, DETAIL)
    表2.setColWidth(loc, 0)
}

写其他列代码前,注意初始化 visableflag  = false
回复

使用道具 举报

天道酬勤青铜一 显示全部楼层 发表于 2021-10-19 15:43:47
lijie 发表于 2021-10-19 15:18
以你图中400V监测达标率(图中第三列)为例,参照如下代码:
var visableflag = flase;
for (1=1;i ...

// 获取所有数据
var tableData = getViewData("表2")
// 获取总行数
var length = tableData.size()       
// 加和变量
var sum1 = 0
// 循环第4列的所有数据,并加和计算
for(var i = 1; i <length; i++) {
sum1 += tableData.get(i,3)
}
// 如果 和 与 满分值 15 求余运算为 0,设置第三列宽度为0(隐藏)
if(sum1 % 15 == 0) {
var loc = new Locator(["c-3"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum2 = 0
for(var i = 1; i < length; i++) {
sum2 += tableData.get(i,4)
}
if(sum2 % 40 == 0) {
var loc = new Locator(["c-4"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum3 = 0
for(var i = 1; i < length; i++) {
sum3 += tableData.get(i,5)
}
if(sum3 % 10 == 0) {
var loc = new Locator(["c-5"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum4 = 0
for(var i = 1; i < length; i++) {
sum4 += tableData.get(i,6)
}
if(sum4 % 5 == 0) {
var loc = new Locator(["c-6"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum5 = 0
for(var i = 1; i < length; i++) {
sum5 += tableData.get(i,7)
}
if(sum5 % 5 == 0) {
var loc = new Locator(["c-7"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum6 = 0
for(var i = 1; i < length; i++) {
sum6 += tableData.get(i,8)
}
if(sum6 % 5 == 0) {
var loc = new Locator(["c-8"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum7 = 0
for(var i = 1; i < length; i++) {
sum7 += tableData.get(i,9)
}
if(sum7 % 5 == 0) {
var loc = new Locator(["c-9"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum8 = 0
for(var i = 1; i < length; i++) {
sum8 += tableData.get(i,10)
}
if(sum8 % 15 == 0) {
var loc = new Locator(["c-10"], COL, DETAIL)
表2.setColWidth(loc, 0)
}

感觉您说的与我现在做的非常相似,方便请您看下我的脚本为什么没有生效吗?

回复

使用道具 举报

天道酬勤青铜一 显示全部楼层 发表于 2021-10-19 15:47:05
永洪tech-wisiy 发表于 2021-10-19 15:03
每个列的所有行得循环才能取

// 获取所有数据
var tableData = getViewData("表2")
// 获取总行数
var length = tableData.size()       
// 加和变量
var sum1 = 0
// 循环第4列的所有数据,并加和计算
for(var i = 1; i <length; i++) {
sum1 += tableData.get(i,3)
}
// 如果 和 与 满分值 15 求余运算为 0,设置第三列宽度为0(隐藏)
if(sum1 % 15 == 0) {
var loc = new Locator(["c-3"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum2 = 0
for(var i = 1; i < length; i++) {
sum2 += tableData.get(i,4)
}
if(sum2 % 40 == 0) {
var loc = new Locator(["c-4"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum3 = 0
for(var i = 1; i < length; i++) {
sum3 += tableData.get(i,5)
}
if(sum3 % 10 == 0) {
var loc = new Locator(["c-5"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum4 = 0
for(var i = 1; i < length; i++) {
sum4 += tableData.get(i,6)
}
if(sum4 % 5 == 0) {
var loc = new Locator(["c-6"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum5 = 0
for(var i = 1; i < length; i++) {
sum5 += tableData.get(i,7)
}
if(sum5 % 5 == 0) {
var loc = new Locator(["c-7"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum6 = 0
for(var i = 1; i < length; i++) {
sum6 += tableData.get(i,8)
}
if(sum6 % 5 == 0) {
var loc = new Locator(["c-8"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum7 = 0
for(var i = 1; i < length; i++) {
sum7 += tableData.get(i,9)
}
if(sum7 % 5 == 0) {
var loc = new Locator(["c-9"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
var sum8 = 0
for(var i = 1; i < length; i++) {
sum8 += tableData.get(i,10)
}
if(sum8 % 15 == 0) {
var loc = new Locator(["c-10"], COL, DETAIL)
表2.setColWidth(loc, 0)
}
能请您看下这段脚本为什么没有效果吗?最前方那段脚本加着注释呢,感谢您

回复

使用道具 举报

永洪tech-wisiy青铜一 显示全部楼层 发表于 2021-10-19 15:48:54
天道酬勤 发表于 2021-10-19 15:47
// 获取所有数据var tableData = getViewData("表2")// 获取总行数var length = tableData.size()        // 加 ...

debug(sum)看你的数据
回复

使用道具 举报

天道酬勤青铜一 显示全部楼层 发表于 2021-10-19 15:52:16

debug结果正常啊,debug(sum1) = 150
回复

使用道具 举报

天道酬勤青铜一 显示全部楼层 发表于 2021-10-19 15:53:20

然后,150 % 15 == 0  true ,应该是设置列宽为 0 的
回复

使用道具 举报

永洪tech-wisiy青铜一 显示全部楼层 发表于 2021-10-19 15:58:43
天道酬勤 发表于 2021-10-19 15:53
然后,150 % 15 == 0  true ,应该是设置列宽为 0 的

没生效是因为你的脚本没用对,locator要分组件,不同组件的定位区域不同。c-0只能用于自由表,普通表应该是使用的列名称,也就是表头名来定位整个列
企业微信截图_16346303115426.png
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部