历史版本5 :单选按钮组控件的打印/导出 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

在做一些报告、合同的时候,单元格中可能有单选按钮组、复选按钮控件,需要将控件一起打印或导出,该怎么实现呢?

1.2 解决思路

通过设置单元格形态数据字典的显示值,利用搜狗输入法的特殊符号实现。

2. 单选按钮组控件示例编辑

2.1 报表设计

新建普通报表,B1~B5 单元格添加「单选按钮组控件」,表格样式如下图所示:

Snag_19da4613.png

2.2 控件设置

设置 B1~B5 单元格的数据字典为「自定义类型」,操作步骤如下图所示:

1610346828996642.png

各控件属性如下表所示:

单元格
控件名称实际值显示值
B1dx11
方式一
B2dx22方式二
B3dx33方式三
B4dx44方式四
B5dx55其他

2.3 单元格形态设置

设置 B1~B5 单元格的形态为「公式形态」,步骤如下图所示:

1610347382189750.png

公式如下表所示:


单元格
公式公式说明
B1if($$$=1,'●'+'方式1','○'+'方式1')
B2if($$$=2,'●'+'方式2','○'+'方式2')
B3if($$$=3,'●'+'方式3','○'+'方式3')
B4if($$$=4,'●'+'方式4','○'+'方式4')
B5if($$$=5,'●'+'其他','○'+'其他')


上述输入公式时,其中的 ● 和 ○ 是通过搜狗输入法的特殊字符输入的字符串,输入方式如下图所示:

Snag_19f758b4.png

2.4 添加状态改变事件

示例是将单选按钮组分开在不同的单元格使用,所以要添加状态改变事件,利用 JavaScript 代码实现选中其中一个单选按钮后,其他的单选按钮不能被选中。

以 B1 单元格为例,其他单元格代码详见模板。

步骤如下图所示:

1610348972123480.png

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 单元格值的最大值即可以返回选中单元格的值。

Snag_1a10b65b.png

2.6 效果预览

保存报表,点击「填报预览」,效果如下图所示:

Snag_1a1a74bd.png

点击「打印」或导出,Excel、Word 、PDF 和图片均可以正常导出,效果如下图所示:

1610350869907742.png

2.7 注意事项

1)若选项较少时,可以不将单选按钮组分开设置。直接在一个单元格添加控件,设置数据字典如下图所示:

1610351509772192.png

2)设置单元格属性形态为「数据字典」,类型设置为「自定义」,设置实际值为 1 时,显示值为「●方式一 ○方式二 ○方式三」,实际值为 2、3 同理设置。

1610351333566746.png

3)上述方式无法控制显示行数,只能手动调整单元格宽度。「填报预览」并导出,效果如下图所示:

Snag_1a3062c1.png

3. 复选按钮控件示例编辑

「复选框按钮控件」的值只有 true 和 flase,没有数据字典设置,值需要通过设置单元格形态的数据字典,自定义实际值与显示值即可实现打印与导出控件。

3.1 添加控件

随意在一张报表中添加「复选按钮控件」,设置控件所在单元格扩展方向为「纵向扩展」。

3.2 单元格形态设置

设置单元格形态为「数据字典」,类型设置为「自定义」。复选按钮控件,设置当实际值为 true 时,显示值为特殊符号 ☑,实际值为 flase 时,显示值为特殊符号 □ 。

1610353570700695.png

3.3 控件默认值设置

复选按钮控件默认没有值,预览时必须进行至少一次勾选操作,才会赋予单元格值。所以需要先设置控件默认值为 flase,直接在控件所在单元格输入文本 flase 即可。详情可参见:复选按钮、复选按钮组控件默认值

3.4 效果预览

保存报表,点击「填报预览」,点击打印或导出。效果如下图所示:

注:打印和导出 PDF 时,☑ 无法显示,导出 Excel、Word 和图片均正常显示

1610354743632529.png

4. 模板下载编辑

已完成模板可参见:

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\FormFAQ\打印导出单选按钮组控件.cpt

%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Form\FormFAQ\打印导出复选按钮控件.cpt

点击下载模板:

打印导出单选按钮组控件.cpt

打印导出复选按钮控件.cpt