反馈已提交

网络繁忙

JS实现参数面板显示对应数据

  • 文档创建者:文档助手1
  • 历史版本:29
  • 最近更新:Fairy.Zhang 于 2024-11-15
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0-

    1.2 应用场景

    希望在参数面板选择客户名称后,参数面板显示客户名称对应的其他信息,类似 根据控件值自动匹配数据 。

    首次打开模板时,参数面板只显示下拉框控件,其他信息均不显示,下拉框控件选择值后,参数面板的其他信息才会显示。如下图所示:

    动画3.gif

    1.3 实现思路

    1)对照 根据控件值自动匹配数据 的方法三,设置参数界面的部分标签控件值为 SQL 函数公式,即可实现下拉框选择客户名称后,部分标签控件显示对应的信息。

    2)首次打开模板时,所有标签控件均不显示,下拉框控件选择值后,所有标签控件才会显示。

    • 控件值设置为 SQL 函数公式的标签控件本身在首次预览时就不显示,只有下拉框选择值后才会显示,所以无需设置。

    • 只需设置固定值的标签控件在下拉框选择值后显示,通过给下拉框控件添加编辑后事件实现。

    2. 示例

    2.1 新建模板

    新建一张普通报表。如下图所示:

    新建普通报表.jpg

    2.2 准备数据

    新建数据库查询 ds1 ,SQL语句为SELECT * FROM 订单 where 客户ID ='${ID}'。如下图所示:

    1.png

    2.3 设计报表

    A1-G1 单元格输入文本内容,A2-G2 单元格拖入相应数据列,自行设计报表样式。如下图所示:

    2.png

    2.4 添加模板参数

    添加模板参数:namepositiondizhiphone。如下图所示:

    注:dizhi是地址的汉语拼音,因address是 系统参数 ,应避免使用。故此处使用地址的汉语拼音dizhi作为参数名。

    4.png

    2.5 参数绑定控件

    1)进入参数面板编辑界面,依次将参数IDnamepositiondizhiphone添加至参数面板。如下图所示:

    5.png

    2)参数ID绑定下拉框控件,其余参数namepositiondizhiphone均绑定标签控件。如下图所示:

    6.png

    3)LabelID 、Labelname 、Labelposition 、Labeldizhi 、Labelphone 的控件值分别设置为:「客户名称:」、「联系人姓名:」、「联系人职务:」、「公司地址:」、「电话号码:」。如下图所示:

    7.png

    4)调整参数面板的大小、控件的大小及位置。如下图所示:

    8.png

    5)设置下拉框控件的数据字典。如下图所示:

    9.png

    6)参数控件name的控件值设置为公式:sql("FRDemo", "select 联系人姓名 from 客户 where 客户ID='" + $id +"'", 1, 1)如下图所示:

    注:公式表示在 FRDemo 连接中执行 SQL 语句,显示第一列第一行的查询结果,根据要求不同,此处亦可去除最后一个 1 ,显示查询到的第一列,参数面板中表现为以逗号分隔的行形式。

    10.png

    7)类似地,为参数控件positiondizhiphone依次设置控件值。

    注:参数控件dizhi的控件值公式中的||表示将两个字符串值连接成一个字符串。

    • 参数控件position的控件值设置为公式:sql("FRDemo","select 联系人职务 from 客户 where 客户ID='" + $id + "'",1,1)

    • 参数控件dizhi的控件值设置为公式:sql("FRDemo","select 城市||地址 from 客户 where 客户ID='"+$id+"'",1,1)

    • 参数控件phone的控件值设置为公式:sql("FRDemo","select 电话 from 客户 where 客户ID='"+$id+"'",1,1)

    8)取消勾选 LabelID 、Labelname 、Labelposition 、Labeldizhi 、Labelphone 的可见。如下图所示:

    12.png

    2.6 设置下拉框编辑后事件

    为下拉框添加一个编辑后事件。如下图所示:

    13.png

    JS代码如下所示:

    var a=this.options.form.getWidgetByName("Labelname");
    a.setVisible(true);
    var b=this.options.form.getWidgetByName("Labelposition");
    b.setVisible(true);
    var c=this.options.form.getWidgetByName("Labeldizhi");
    c.setVisible(true);
    var d=this.options.form.getWidgetByName("Labelphone");
    d.setVisible(true);

    2.7 效果预览

    注:不支持移动端。

    PC 端效果如 1.2 节所示。

    3. 下载模板

    点击下载已完成模板:JS实现参数面板显示对应数据.cpt

    附件列表


    主题: 参数应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭



    AI

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