1. 概述编辑
1.1 问题描述
介绍填报时打印或导出复选框时,知道修改配置项的方法只支持打印或导出「复选按钮」与「复选按钮组」控件。
但是在做一些报告、合同的时候,单元格中可能有「单选按钮组」控件,那么该如何实现打印或导出「单选按钮组」控件呢?
1.2 解决思路
通过设置单元格形态数据字典的显示值,利用搜狗输入法的特殊符号实现。
2. 示例编辑
2.1 报表设计
新建普通报表,B1~B5 单元格添加「单选按钮组控件」,表格样式如下图所示:
2.2 控件设置
设置 B1~B5 单元格的数据字典为「自定义类型」,操作步骤如下图所示:
各控件属性如下表所示:
单元格 | 控件名称 | 实际值 | 显示值 |
---|---|---|---|
B1 | dx1 | 1 | 方式一 |
B2 | dx2 | 2 | 方式二 |
B3 | dx3 | 3 | 方式三 |
B4 | dx4 | 4 | 方式四 |
B5 | dx5 | 5 | 其他 |
2.3 单元格形态设置
设置 B1~B5 单元格的形态为「公式形态」,步骤如下图所示:
公式如下表所示:
单元格 | 公式 | 公式说明 |
---|---|---|
B1 | if($$$=1,'●'+'方式1','○'+'方式1') | |
B2 | if($$$=2,'●'+'方式2','○'+'方式2') | |
B3 | if($$$=3,'●'+'方式3','○'+'方式3') | |
B4 | if($$$=4,'●'+'方式4','○'+'方式4') | |
B5 | if($$$=5,'●'+'其他','○'+'其他') |
上述输入公式时,其中的 ● 和 ○ 是通过搜狗输入法的特殊字符输入的字符串,输入方式如下图所示:
2.4 添加状态改变事件
示例是将单选按钮组分开在不同的单元格使用,所以要添加状态改变事件,利用 JavaScript 代码实现选中其中一个单选按钮后,其他的单选按钮不能被选中。
以 B1 单元格为例,其他单元格代码详见模板。
步骤如下图所示:
JavaScript 代码如下:
var location = this.options.location; var cr = FR.cellStr2ColumnRow(location); var col = cr.col; var ro = cr.row; var zybck = contentPane.getWidgetByCell(FR.columnRow2CellStr({col: col, row: ro})); val = zybck.getValue();if(val==1){ //修改控件值 contentPane.getWidgetByName("dx2").setValue(0); contentPane.getWidgetByName("dx3").setValue(0); contentPane.getWidgetByName("dx4").setValue(0); contentPane.getWidgetByName("dx5").setValue(0); //修改单元格的值 contentPane.setCellValue("B2",null,0); contentPane.setCellValue("B3",null,0); contentPane.setCellValue("B4",null,0); contentPane.setCellValue("B5",null,0); }
2.5 报表填报属性设置
点击「模板>报表填报属性」,添加「内置 SQL」提交,示例使用的是在本地 FRDemo 中新建的「测试」表,只有一个字段「选择方式」。值为公式:max(B1,B2,B3,B4,B5)。
注:因为 2.4 节中设置的状态改变事件,当选中其中一个单元格时,其余单元格的值为 0,返回 B1~B5 单元格值的最大值即可以返回选中单元格的值。
2.6 效果预览
保存报表,点击「填报预览」,效果如下图所示:
点击「打印」或导出,Excel、Word 、PDF 和图片均可以正常导出,效果如下图所示:
3. 模板下载编辑
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\FormFAQ\打印导出单选按钮组控件.cpt
点击下载模板:打印导出单选按钮组控件.cpt
4. 注意事项编辑
4.1 不分开设置控件
若选项较少时,可以不将单选按钮组分开设置。
1)直接在一个单元格添加控件,设置数据字典如下图所示:
2)设置单元格属性形态为「数据字典」,类型设置为「自定义」,设置实际值为 1 时,显示值为「●方式一 ○方式二 ○方式三」,实际值为 2、3 同理设置。
3)上述方式无法控制显示行数,只能手动调整单元格宽度。「填报预览」并导出,效果如下图所示: