永洪社区

标题: 自由表隐藏合并单元格的多列 [打印本页]

作者: 喵了个汪    时间: 2024-5-21 10:08
标题: 自由表隐藏合并单元格的多列
请问下面场景怎么实现?


作者: yhdata_lyaa    时间: 2024-5-21 10:28
参考脚本
var a=下拉列表参数1.getSelectedObjects()[0]
  var loc1 = new Locator(['c-0'],COL,DETAIL);
    // 第一列 取 0,第 二列为 1,依次类推, 这是第1列  var loc2 = new Locator(['c-1'],COL,DETAIL);
  var loc3 = new Locator(['c-2'],COL,DETAIL);
  var loc4 = new Locator(['c-3'],COL,DETAIL);

if(a=='A'){
    图表1.setColWidth(loc0,200);
    图表1.setColWidth(loc1,200);
    //设置列宽为200,显示列
}
if(a=='B'){
    图表1.setColWidth(loc2,0);
   图表1.setColWidth(loc3,0);
  //设置列宽为0,隐藏列
}


作者: 喵了个汪    时间: 2024-5-21 10:34
yhdata_lyaa 发表于 2024-5-21 10:28
参考脚本
var a=下拉列表参数1.getSelectedObjects()[0]
  var loc1 = new Locator(['c-0'],COL,DETAIL);

下拉列表是多选,并不是单选
作者: 喵了个汪    时间: 2024-5-21 10:36
喵了个汪 发表于 2024-5-21 10:34
下拉列表是多选,并不是单选

而且列太多了,没有什么办法对合并后的单元格里面的列进行隐藏吗,非要一列列去写死隐藏

作者: 美滋滋    时间: 2024-5-21 10:48
yhdata_lyaa 发表于 2024-5-21 10:28
参考脚本
var a=下拉列表参数1.getSelectedObjects()[0]
  var loc1 = new Locator(['c-0'],COL,DETAIL);

问题如下:
1. 楼主那个是复选框,你这个只支持单选
2. 缺少默认初始状态处理。建议所有列每次变化时初始无条件设置为宽等于0,然后根据条件设定哪些列宽为200.
作者: yhdata_lyaa    时间: 2024-5-21 10:58
美滋滋 发表于 2024-5-21 10:48
问题如下:
1. 楼主那个是复选框,你这个只支持单选
2. 缺少默认初始状态处理。建议所有列每次变化时初始 ...

严谨
作者: yhdata_lyaa    时间: 2024-5-21 11:00
喵了个汪 发表于 2024-5-21 10:34
下拉列表是多选,并不是单选

那if条件自己改一下,这个也没有特别好的办法,感觉都有点麻烦
作者: 喵了个汪    时间: 2024-5-21 11:09
yhdata_lyaa 发表于 2024-5-21 11:00
那if条件自己改一下,这个也没有特别好的办法,感觉都有点麻烦

是的,不太适用,只能想办法改变数据结构了
作者: 美滋滋    时间: 2024-5-21 11:28
就算列很多,其实也不算太麻烦吧。你可以把需要变化的列号以及控制用的选项分别记录在两个数组中,
比如:
var colctrl = ["A","A","B","B"]
var collist = [1,2,3,4]
然后脚本写逻辑,当选项中有"A"时对应的1,2列显示,当选项中有"B"时,对应的3,4列显示。这样今后维护时也可以通过修改数组的值来进行控制,维护成本也低。




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