永洪社区

标题: 自由报表中,脚本设置行高 [打印本页]

作者: Leeo    时间: 3 天前
标题: 自由报表中,脚本设置行高
使用自由报表,某个数据根据纵向父单元格纵向拓展,根据传入参数判断需要把拓展的单元格隐藏,那么我该如何在脚本中把这些单元格隐藏?或者有什么好方法来实现?
作者: yhdata_ruby    时间: 3 天前
脚本设置行高参考
var loc=new Locator(["r-i"], ROW, DETAIL);//第一行i取0,第二行为1,依次类推
图表1.setRowHeight(loc, 90) //30为需要设置的新的行高
但注意:字段是拓展的单元格的行高,无法仅针对拓展后的某一单元格设置
作者: Leeo    时间: 前天 07:30
尝试过这种做法,但是无法实现。因为我把脚本写在装载时运行,会变成隐藏行高后再拓展。需要写在变化时运行中?这个报告只有查看,该如何触发变化时运行
作者: yhbi老6了    时间: 前天 08:20
就是单单选择不展示扩展列是吧?我有个便捷点的方法:
新建计算列 : 隐藏展示辅助计算列 -> 数据类型 布尔值  -> 代码写 true

新增一个控制参数 is_show 类型布尔值 弹出保留(一会方便测试)
然后对自由式表格的扩展单元格
做单元格过滤 , 单元格过滤设置  隐藏展示辅助计算列  是  等于 ?{is_show}
这样就可以实现用参数进行控制扩展单元格是否展示了。当is_show为true时,扩展单元格展示,当为false时 扩展单元格 不展示 。


作者: 行走的蜗牛    时间: 前天 08:43
其实最好还是截个图上传附件说明一下,单这么看的话,我感觉加一个下拉传参就行,自由表绑定的时候条件写不等于
作者: 宇文波    时间: 前天 08:45
味道不错
作者: Leeo    时间: 前天 08:49
因为是内网没法截图,只能拍照。我使用的是把行高设置为0,原本写在装载时运行脚本中发现不行,改为放在变化时运行,结果还是不行。
作者: 隔壁老帆    时间: 前天 08:58
脚本设置行高参考
var loc=new Locator(["r-i"], ROW, DETAIL);//第一行i取0,第二行为1,依次类推
图表1.setRowHeight(loc, 90) //30为需要设置的新的行高
但注意:字段是拓展的单元格的行高,无法仅针对拓展后的某一单元格设置
作者: yhdata_lyaa    时间: 前天 10:11
Leeo 发表于 2024-12-3 08:49
因为是内网没法截图,只能拍照。我使用的是把行高设置为0,原本写在装载时运行脚本中发现不行,改为放在变 ...

看不清楚怎么写的。也可以试试四楼的办法,不写什么脚本
作者: Leeo    时间: 前天 10:39
单元格过滤中我没找到隐藏的方法,能具体截个图吗
作者: yhbi老6了    时间: 前天 10:45
按步骤来:
1、新建计算列 : 隐藏展示辅助计算列 -> 数据类型 布尔值  -> 代码写 true

2、新增一个控制参数 is_show 类型布尔值 弹出保留(一会方便测试)
3、对自由式表格的扩展单元格做单元格过滤 , 单元格过滤设置  隐藏展示辅助计算列  是  等于 ?{is_show}

这样就可以实现用参数进行控制扩展单元格是否展示了。当is_show为true时,扩展单元格展示,当为false时 扩展单元格 不展示 。

作者: yhbi老6了    时间: 前天 10:48


作者: yhbi老6了    时间: 前天 10:49


作者: mary01    时间: 昨天 14:42
本帖最后由 mary01 于 2024-12-4 14:46 编辑

如果报表工具允许通过脚本编程来控制单元格属性,那么可以在报表生成之前或期间运行一段脚本来动态调整单元格的可见性。具体语法取决于你使用的报表工具:
下边是一个代码示例希望能帮到你
// 假设 paramHideCells 是传入的参数
var paramHideCells = getParameter("paramHideCells");

// 遍历所有子单元格,根据父单元格的状态决定是否隐藏
for (var rowIndex = 0; rowIndex < totalRows; rowIndex++) {
    var parentCell = getParentCell(rowIndex); // 获取父单元格
    var childCells = getChildCells(rowIndex); // 获取当前行的所有子单元格
   
    if (shouldHide(parentCell)) { // 根据你的逻辑判断是否应该隐藏
        for (var i = 0; i < childCells.length; i++) {
            hideCell(childCells, paramHideCells);
        }
    }
}

function shouldHide(parentCell) {
    // 实现你的判断逻辑,比如比较年份等
}

function hideCell(cell, hideFlag) {
    if (hideFlag) {
        cell.hidden = true; // 或者使用类似的方法隐藏单元格
    } else {
        cell.hidden = false;
    }
}





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