1. 概述编辑
1.1 问题描述
在使用单元格控件进行填报时,如果控件数据字典设置了实际值和显示值,当控件填写完毕失去焦点后,单元格中最终显示的是实际值。如果想要填写完毕后,保留显示值,该如何操作呢?
1.2 实现思路
当单元格控件填写完毕并失焦后,程序会将控件输入值对应的实际值发送给单元格并展示出来。所以只需要修改控件所在单元格的 形态,为其设置 数据字典,将实际值和显示值和控件数据字典设置保持一致,即可解决上述问题。
2. 示例编辑
以内置数据库 FRDemo 中的「产品」和「订单明细」两张表为例。
2.1 模板设计
分别为单元格 A2,B2,D2 添加文本控件,下拉框控件,文本控件。模板设计如下图所示:
选中 B2 单元格,在右侧属性面板控件设置>高级 中为其设置数据字典,其中实际值为「产品ID」,显示值为「产品名称」。如下图所示:
2.1.3 添加公式
鼠标右键点击 C2 单元格,选择单元格元素>插入公式,其中单价是根据产品 ID 进行 自动匹配 的,公式为:
if(len(B2) = 0, "", sql("FRDemo", "select 单价 from 产品 where 产品ID=" + B2, 1, 1))
2.2 效果预览
保存模板,点击填报预览,效果如下图所示:
预览发现,填报选择产品时,B2 单元格显示的为显示值,选择完成之后,控件失去焦点,控件文本显示的是实际值。
3. 解决方案编辑
设置 B2 单元格的形态,数据库表为「产品」,设置实际值为「产品 ID」,显示值为「产品名称」。
注:下拉复选框控件返回值类型必须为数组,暂不支持返回值为字符串。
3.1 设置过程
在本文第二章问题示例模板基础上选中 B2单元格,在右侧属性面板中选择单元格属性>形态,为其设置数据字典。如下图所示:
3.2 填报预览
保存模板,点击填报预览,下拉框失去焦点之后,下拉框中显示的还是显示值,而非实际值。如下图所示:
4. 模板下载编辑
已完成的模板,请参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\下拉框填报完成之后显示为显示值.cpt
点击下载模板:下拉框填报完成之后显示为显示值.cpt