本帖最后由 wzh5788 于 2016-1-25 13:11 编辑
专题总结 >> 超级链接 >> 典型应用>>超级链接到子报表-筛选后返回参数
1. 问题描述
在进行填报时,如果要填报的数据来自于现有数据库的某个数据,但是又需要通过过滤,并人为准确选择一个进行填报。由此,可以采用本文介绍的方式来实现
2. 实现思路
使用超级链接的方式,点击按钮事件触发,弹出对话框选择报表,输入条件后,进行数据筛选,再选择所需要数据,并返回到主报表继续其他填报
3. 示例
3.1 主报表
设置按钮控件。
针对行式填报,需要在点击查询弹出对话框时,同时将当前对应的代码和名称的行列索引传给子报表
id为预定义参数
按钮点击事件js
- window.form = this.options.form; //当前的form赋值给全局变量
- var $iframe = $("<iframe id='inp' name='inp' width='100%' height='100%' scrolling='no' frameborder='0'>"); // iframe参数的命名及宽高等
- $iframe.attr("src", "${servletURL}?reportlet=chart/childtest.cpt&op=write&id="+id+"&col="+col+"&row="+row); //childtest.cpt为点击查询时,对话框中显示的子报表
- var o = {
- title : "筛选所需数据并返回",
- width : 600,
- height: 300
- };
- FR.showDialog(o.title, o.width, o.height, $iframe,o); //弹出对话框
复制代码
设置插入按钮插入值策略为原值,保证添加记录行后,有相同功能
3.2 子报表
首先定义接收传入的行列索引的参数
其次,建立数据查询
id参数为查询条件(可从 主报表传入,或者当前子报表界面输入)
然后,数据集绑定到单元格,增加最后一列操作,按钮为选择操作
则对话框弹出时,id参数将等于“A”点击查询则可以查询到所有编码类似于"A"的客户资料
最后,选择按钮的点击事件
val为第一个返回值客户ID
va2为第二个返回值 公司名
col row来自于主报表的参数传入
js如下
- var form = window.parent.contentPane; //拿取当前页面的父窗口(即获取填报界面)
- form.setCellValue(col-1,row-1,val);
- //赋值的索引要做下处理,做对应
- form.setCellValue(col,row-1,va2);
- //给文本控件的单元格(A2)赋值val,0代表第一列,1代表第2行
- window.parent.FR.closeDialog(); //确定获取值后,关闭取消父窗口的对话框
- window.parent.FR.destroyDialog();
复制代码 为了不为用户增加负担,增加理解成本,可以通过填报页面的web属性,将工具栏隐藏
3.3 效果展示
|