反馈已提交

网络繁忙

JS实现填报联动自动生成默认值

  • 文档创建者:yets11
  • 编辑次数:26次
  • 最近更新:Leo.Tsai 于 2022-06-29
  • 1. 概述

    1.1 问题描述

    想实现在填报联动的基础上,选择第一个控件的值后,其他相关控件可以联动出可选范围内的第一个值。


    1.2 实现思路

    当单元格控件的值联动和数据字典联动都设置了的情况下,触发数据字典联动时,会清空单元格值,造成值联动失效。所以要同时实现值联动和数据字典联动的话,需通过 JS 方法对单元格进行赋值。接口说明可以参考:API接口汇总

    注:不支持移动端。

    2. 示例

    2.1 设计表格

    B1、D1、F1 单元格添加下拉框控件,如下图所示:

    Snag_6bdc96a1.png

    2.2 设置控件的数据字典联动

    给三个控件分别设置下拉框数据字典,类型设置选择公式,输入实际值与显示值,如下图所示:

    三个控件仅实际值不同,显示值都为 $$$,实际值分别为:

    B1:sql("FRDemo", "SELECT 货主地区 FROM 订单", 1)

    D1:sql("FRDemo", "SELECT 货主省份 FROM 订单 where 货主地区='" + B1 + "'", 1)

    F1:sql("FRDemo", "SELECT 货主城市 FROM 订单 where 货主地区='" + B1 + "' and 货主省份='" + D1 + "'", 1)

    2.4 设置控件的值联动

    1)给 B1 单元格的下拉框控件添加编辑后事件。

    JavaScript 代码如下:

    注:使用 FR.remoteEvaluate 接口存在一定安全风险,用户可根据实际情况使用,详情可查看:全局接口-FR

    var row = FR.cellStr2ColumnRow(this.options.location).row + 1;
    //获取当前行号
    var area = this.getValue();
    //获取当前控件值
    var province = FR.remoteEvaluate('sql("FRDemo","select 货主省份 from 订单 where 货主地区=\'' + area + '\'",1,1)');
    //根据当前选择的地区查询出对应的第一个省份
    var city = FR.remoteEvaluate('sql("FRDemo","select 货主城市 from 订单 where 货主地区=\'' + area + '\' and 货主省份=\'' + province + '\'",1,1)');
    //根据当前选择的地区和对应的第一个省份,查询出对应的第一个城市
    setTimeout(function() {
    _g().setCellValue('D' + row, null, province);
    //给当前行的省份单元格赋值
    }, 200)

    2)同样给 D1 控件也添加编辑后事件。
    JavaScript 代码如下:

    var row = FR.cellStr2ColumnRow(this.options.location).row + 1;
    //获取当前行号
    var area = _g().getCellValue('B' + row, null);
    //获取当前行的地区值
    var province = this.getValue();
    //获取当前控件值
    var city = FR.remoteEvaluate('sql("FRDemo","select 货主城市 from 订单 where 货主地区=\'' + area + '\' and 货主省份=\'' + province + '\'",1,1)');
    //根据当前选择的地区和省份,查询出对应的第一个城市
    setTimeout(function() {
    _g().setCellValue('F' + row, null, city);
    //给当前行的城市单元格赋值
    }, 500)

    2.5 关闭脚本调用公式限制

    由于示例中使用脚本调用了一些公式,需要打开数据决策系统,点击管理系统>安全管理,将脚本调用公式限制右边的按钮关闭掉,如下图所示:

    image.png

    2.6 效果预览

    保存报表,点击填报预览,最终的效果下图所示:


    3. 模板下载

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭