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

编辑
文档创建者:印然 (67260 )     浏览次数:3397次     编辑次数:6次     最近更新:caixiaolan 于 2017-07-13     

目录:

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

此页面有帮助吗?