最新历史版本 :单元格下拉树返回显示值 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1.概述编辑

1.1 问题描述

单元格里添加的 下拉树控件 ,数据字典设置了实际值和显示值,选择时显示的是显示值,在失焦后单元格中显示的会是实际值。

例如下图用下拉树展示部门结构,选项的实际值为部门 ID,显示值为部门名称,可以看到失焦后,下拉树框里面变为实际值。

那如何让其失焦后仍然显示为显示值并且可以提交入库呢?

1A1C972C-156C-4F67-9CD3-F7A4E929829E.GIF

1.2 原因分析

下拉树的返回值是一个数组,但如果返回了完整路径,则形态在转化实际值为显示值时,会将每个节点的完整路径视为一个字符串整体去匹配数据,所以就无法匹配到相应的显示值了。

1.3 解决思路

单元格形态>数据字典设置实际值和显示值的对应关系,这样可以实现失焦后最终显示成显示值。在填报属性中用 MAPARRAY() 和 VALUE() 函数实现对实际值的转换入库。

2. 示例 编辑

2.1 准备数据

1)新建一张普通报表,添加数据集 ds1,SQL 语句为:SELECT * FROM 公司部门

2)接着添加树数据集 tree1,选择刚才的 ds1,如下图设置:

2.2 添加下拉树

在 A1 单元格添加一个下拉树控件,数据字典构建方式选择 自动构建,实际值为部门 ID,显示值为部门名称。设置成多选和不返回完整路径。如下图所示:

2.3 单元格形态设置

选中 A1 单元格,在「单元格属性>形态」选择数据字典,绑定 ds1 数据集,实际值为部门ID,显示值为部门名称。

2.4 填报属性设置

如上设置后失焦显示的已经是显示值了,但此时提交入库绑定单元格获取的值,仍然是实际值。此处可以利用公式来处理:maparray(A1,value("ds1","部门名称","部门ID",item)),其中 maparray 函数用来新建数组,通过 Value函数 在新数组中列出和 A1 单元格中部门ID 一一对应的部门名称。

如果需要对结果进行拼接,以字符串的形式存储到数据库,可以在公式中加一个字符串拼接函数 JOINARRAYJOINARRAY(maparray(A1,value('ds1','部门名称','部门ID',item)),',')

2.5 效果预览

PC 端预览效果如下图所示:

1.gif

注:该方案也支持移动端预览。

3. 模板下载编辑

已完成模板参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\widgetReport\单元格下拉树返回显示值.cpt

点击下载模板:单元格下拉树返回显示值.cpt