填报页面下拉树控件返回所选层级值

编辑
  • 文档创建者:印然
  • 浏览次数:5847次
  • 编辑次数:8次
  • 最近更新:Kevin-s 于 2019-06-20
  • 1. 描述

    前面几篇文档介绍了参数界面下拉树的使用方法,以及 treelayer 函数的使用,那么在填报页面使用下拉树控件时,如果不做任何处理,控件的返回值就会是层级路径,而不是所选层级的值,并且往数据库中填报的值也会是路径值,那么怎样设置才能使单元格显示为所选层级值,并且录入数据库也是所选层级值呢。


    2. 示例 

    在填报页面使用下拉树展现部门结构,实际值为部门 ID,显示值为部门名称,希望实现下拉树所在单元格返回值为所选层级值的显示值,入库时时所选层级值的实际值。如下图所示:

    222


    2.1 数据准备

    新建一张模板,添加数据集 ds1:SELECT * FROM 公司部门

    接着添加树数据集 tree1,如下图:

    222


    2.2 添加下拉树

    在报表主体添加一个下拉树控件,在属性设置页面去掉只返回叶子节点前面的勾选,新建一个单选下拉树,构建方式选择 自动构建,实际值为部门 ID,显示值为部门名称,设置如下图:

    222

    此时,下拉树就可以正常使用,但是控件的返回值是路径值,并且还是实际值,如下图:

    222

    那么,为了让其返回为所选层级的显示值,即返回“财务部”,就需要在形态中设置,将控件返回实际值的路径转化成所选层级的显示值,即获取到控件返回值部门 ID“1,13”中的“13”,并通过 SQL 语句,将部门 ID 转换为部门名称即可。


    2.3 形态设置

    如上所说,获取路径值的最后一个部门 ID 的值,可用 treelayer 函数 实现,即treelayer($$$),用sql语句转换部门ID和部门名称,则可用 SQL 函数,完整的公式如下:

    sql("FRDemo","select 部门名称 from 公司部门 where 部门id='"+treelayer($$$)+"'",1)

    如下图:

    222

    注:如果此处的下拉树是多选下拉树,那么sql函数应该为:sql("FRDemo","select 部门名称 from 公司部门 where 部门id in ('"+treelayer($$$)+"')",1)。


    2.4 填报属性设置

    到此为止,报表展示时的数据显示已经满足需求,但是上面所做的一切设置都只是改变了数据的形态,并没有改变数据的实际值,那么在入库的时候还是会用实际值入库,比如说,选择了“财务部部长”,填报进数据库的值却是“131”,很明显,填报进数据库的值应该是“财务部部长”对应的部门 ID“131”,所以在填报属性处也需要使用公式treelayer(B2),B2 单元格为下拉树所在单元格,如下图:

    222


    2.5 结果查看

    点击填报预览,选择“财务部部长”,Web 端的结果如上所示,点击提交按钮之后,查看表里面的数据,会发现填报进去的是财务部的实际值“13”。如下图:

    222

    注:不论是单选下拉树还是多选下拉树均可这么设置。


    附件列表


    主题: 报表应用
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]