1. 描述编辑
在我们平时对控件的使用中,避免不了需要对控件值的引用,那么在引用控件的值时,会涉及控件实际值和显示值,现在具体划分哪些控件有实际值与显示值之分,以及控件值的使用!
2. 控件(值)对比编辑
控件 | 实际值 | 显示值 | 实际值显示值是否一致 |
---|---|---|---|
文本控件 | -- | -- | 是 |
文本域控件 | -- | -- | 是 |
数字控件 | -- | -- | 是 |
密码控件 | -- | -- | 是 |
按钮控件 | -- | -- | 是 |
复选框控件 | -- | -- | 是 |
单选按钮组控件 | 有 | 有 | 否 |
复选框组控件 | 有 | 有 | 否 |
下拉框控件 | 有 | 有 | 否 |
下拉复选控制件 | 有 | 有 | 否 |
日期控件 | -- | -- | 是 |
文件控件 | -- | -- | 是 |
列表控件 | 有 | 有 | 否 |
网页框 | -- | -- | 是 |
下拉树 | 有 | 有 | 否 |
视图树 | 有 | 有 | 否 |
注:对于文本框这类控件来说,实际值和显示值是没有区别的,但是对于下拉框这种能设置数据字典来定义实际值和显示值的控件就不一样了。
3. 示例一编辑
我们先演示一下控件显示值和实际值的获取方法及使用区别!
过程:在参数面板新建:下拉框控件(t1)、单选按钮组控件(t2)、复选框控件(t3)、下拉复选框控件(t4)、文本控件(t5)及预定义按钮(提交)
注:上述控件全部独立,不存在联动!
3.1 下拉框控件(t1)
1)选中 t1 按钮,设置字典:
2)在预定义按钮中设置点击事件,如下:
JavaScript 代码:
var Widget = this.options.form.getWidgetByName("t1"); //在参数界面获取控件的方法,先获取决策报表,再通过控件名称来获取控件
var value_1 =Widget.getValue(); //获取控件实际值
alert('我的实际值是:'+value_1); //弹出控件实际值
var value_2 =Widget.getText(); //获取控件显示值
alert('我的显示值是:'+value_2); //弹出控件显示值
3)效果预览:(实际值和显示值不同)
同理设置:单选按钮组控件(t2)、复选框控件(t3)、下拉复选框控件(t4)得到的结果一样:(实际值和显示值不同)
3.2 文本控件(t5)
文本框控件就不一样了,它的结果表明:(实际值和显示值相同)
结论:目前除了下拉框控件、单选按钮组控件、复选框控件、下拉复选框控件、列表控件、下拉树、视图树,这种能设置数据字典来定义实际值和显示值的控件[实际值和显示值不同]外,其他控件实际值和显示值均相同!
具体请参考上面的控件对比图表
4. 示例二编辑
如果在单元格中获取控件值,获取到的是控件的显示值还是实际值!
过程:我们分别在报表的 B3、C3、D3、E3、F3 单元格获取参数控件 t1、t2、t3、t4、t5 的值!
1)设置方法:
2)效果预览:
结论:参数界面的控件传递到后台或在单元格直接获取,都是控件的[实际值]。
5. 实际值显示值多对一编辑
就如上述所展示的那样,通常实际值和显示值是一一对应的关系。但是也会有不同实际值对应相同显示值的情况,就比如企业名称可以相同但 ID 是唯一的,ID 与名称就构成了多对一的关系。
10.0 统一控件在多个实际值对应相同显示值情况下的处理逻辑:
1)直接在控件里选值时,无论是参数查询还是新填报,均支持实际值和显示多对一的情况,也即由所选的显示值得到其对应的实际值。
2)通过传参赋予控件值时,如果传参是实际值,则和直接在控件里选值的逻辑保持一致;如果传递的是显示值,则控件默认选中第一个显示值。
下面进行举例说明。
5.1 参数查询
如图所示,新增一个内置数据集:
在参数设置界面添加下拉框、下拉复选框、单选按钮组、复选按钮组、视图树以及查询按钮,如下图所示:
注意在添加控件时,依次给控件修改名称,这里按顺序修改为:a、b、c、d、e。
就拿下拉框控件 a 举例:
其余控件不多做说明,修改完名称的控件如下图所示:
注:formSubmit0为查询按钮控件。
接着给各个控件增加数据字典设置。
依然以下拉框控件 a 举例说明,如下图所示:数据字典的类型设置为数据查询;实际值为:学号;显示值为:姓名。
下拉复选框、单选按钮组、复选按钮组均如上图下拉框一样设置。
视图树则稍有不同:
1)注意首先将【多选】勾选上;
2)设置数据字典:构建方式选择【极速分层构建】;数据集选择新建好的内置数据集;实际值选择【学号】;显示值选择【姓名】。如下图所示:
参数界面设置完成,接着如图设置报表主体:
分别在 A2-E2 单元格内插入公式,输入对应的【$控件名】。
预览效果如下:
实际值显示值多对一的情况下,选择同样的显示值依然可以准确得出不同的实际值。
此外,可手动输入值的控件(比如下拉复选框),手动输入了多个相同的显示值,则跟传参一样控件只选中第一个显示值,如下图所示:
5.2 新填报预览
下拉框、下拉复选框、单选按钮、复选框组、视图树控件编辑前后均显示显示值,如下图所示:
注:填报预览下编辑时展示显示值,结束后展示实际值,必须借助单元格的形态设置才能实现和新填报一样的效果。具体可以参考下拉框填报完成之后显示为实际值。
5.3 传参赋予控件值
就如上面说明的那样:通过传参赋予控件值时,如果传参是实际值,则和直接在控件里选值的逻辑保持一致;如果传递的是显示值,则控件默认选中第一个显示值。
我们依然需要使用刚才 5.1 建立的参数查询报表。
然后再新建一个报表,设计报表主体如下图所示:
单元格内写入的内容来源如下图所示:
然后给 A1-F1 单元格添加超级链接至 5.1 使用的参数查询报表,如下图所示:
A1-E1 添加超级链接的设置均如上图所示,没有任何不同。故在此不多做赘述。
注:设置好 A1 单元格超链接之后可以直接复制 A1 单元格至 B1-F1中,再修改单元格内容为“2-5、赵一”即可。
保存模板,预览。预览效果如下:
可以看到传递的是显示值“赵一”时,控件默认选中第一个显示值。