反馈已提交

网络繁忙

JS实现根据控件值自动匹配数据

  • 文档创建者:星踪
  • 历史版本:7
  • 最近更新:Leo.Tsai 于 2022-06-29
  • 1. 概述

    1.1 问题描述

    根据控件值自动匹配数据文档中介绍了2种联动方式,但是都需要在单元格失焦后才能触发联动,且一旦手动修改了联动公式所在单元格的数据,后续就无法再联动了。

    那么如果有以上两种需求的场景,该如何实现呢?

    1621395518878172.gif

    1.2 解决方案

    利用控件的编辑后事件触发联动,在事件中根据当前值获取所需数据,赋给其他单元格。接口说明可以参考API接口汇总

    注:不支持移动端。

    2. 示例

    2.1 设计模板

    新建普通报表,设计填报表格,A3 单元格添加下拉框控件,B3~F3 添加文本框控件,如下图所示:

    2.2 下拉框设置数据字典

    选中 A3 单元格,给下拉框控件绑定数据字典,如下图所示:

    2.3 添加数据集

    新建数据集ds1,从FRDemo取数,sql语句为:SELECT * FROM 产品

    2.4 设置编辑后事件

    选中A3单元格,给下拉框控件添加一个编辑后事件。

    JavaScript 代码如下:

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

    var id=this.getValue();
    //获取当前控件值
    var cpmc=FR.remoteEvaluate("value('ds1','产品名称','产品ID','"+id+"')");
    var dwsl=FR.remoteEvaluate("value('ds1','单位数量','产品ID','"+id+"')");
    var cbj=FR.remoteEvaluate("value('ds1','成本价','产品ID','"+id+"')");
    var dj=FR.remoteEvaluate("value('ds1','单价','产品ID','"+id+"')");
    var kcl=FR.remoteEvaluate("value('ds1','库存量','产品ID','"+id+"')");
    //根据产品ID去ds1数据集中获取其他字段的值
    var row=FR.cellStr2ColumnRow(this.options.location).row;
    //获取当前行号
    _g().setCellValue(0,1,row,cpmc);
    _g().setCellValue(0,2,row,dwsl);
    _g().setCellValue(0,3,row,cbj);
    _g().setCellValue(0,4,row,dj);
    _g().setCellValue(0,5,row,kcl);
    //给当前行其他单元格赋值

    2.5 效果预览

    保存报表,填报预览效果如下图所示:

    1.gif

    3. 模板下载

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\JS实现根据控件值自动匹配数据.cpt

    点击下载模板:JS实现根据控件值自动匹配数据.cpt

    附件列表


    主题: 填报应用
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持