自定义填报风格实现主子窗口式填报
润乾报表填报功能支持各种类型的编辑风格,为了满足用户灵活多变的需求还预留了自定义编辑风格的js接口,让客户自定义编辑风格。本文利用自定义填报编辑风格来实现主子窗口交互式的填报。
需求描述: 
填报表数据分为两部分,一部分为根据用户录入数据从数据库中查询得到的结果,如下图中红色边框部分,另一部分为用户网页录入数据。 
填报要求,点击雇员ID对应的对话框(绿色框)弹出子窗口,在子窗口中选择雇员,点击确定子窗口关闭,本填报表页面(父窗口)根据子窗口选择值查询并填充员工基本信息(红色框部分),显示如下图所示效果。 
需求实现: 
1. 主窗口页面(parent.jsp):该页面完成填报表的发布,定义自定义填报编辑风格的js函数。 
部分代码: 
Js函数代码: 
<script type=”text/javascript”> 
function onOpenWindow(){ //showModalDialog的第二个参数是传递给子窗口的值 
//在子窗口可以通过window.dialogArguments方法获取 
//如果不需要传递,这个参数就用window本身 
Var result = window.showModalDialog(“child.jsp”,window,”dialogWidth:300px;dialogHeight:300px”); 
if(result != null){ 
window.location=”parent.jsp?empID=”+ result[0]; 
function show() 
onOpenWindow(); 
function hidden(){} 
</script> 
报表发布代码: 
<% 
StringBuffer param=new StringBuffer(); 
Enumeration paramNames = request.getParameterNames(); 
if(paramNames!=null){ 
while(paramNames.hasMoreElements()){ 
String paramName = (String) paramNames.nextElement(); 
String paramValue=request.getParameter(paramName); 
if(paramValue!=null){ 
//把参数拼成name=value;name2=value2;…..的形式 
param.append(paramName).append(“=”).append(paramValue).append(“;”); 
%> 
<report:html name=”report1″ reportFileName=”main.raq” 
funcBarLocation=”top” 
needPageMark=”yes” 
generateParamForm=”no” 
params=”<%=param.toString()%>” 
needSaveAsExcel=”yes” 
exceptionPage=”/reportJsp/myError2.jsp” 
needOfflineInput=”yes” 
width=”-1″ 
/>
填报表:main.raq,该报表为填报表,可根据参数empID查询员工基本信息。
 
参数:empID,数据类型为整数 
数据集:ds1:SELECT 雇员.雇员ID,雇员.姓氏,雇员.名字,雇员.尊称,雇员.职务,雇员.出生日期,雇员.城市,雇员.家庭电话,雇员.地址,雇员.地区,雇员.国家,雇员.邮政编码,雇员.照片 FROM 雇员 WHERE 雇员.雇员ID = ? 参数为empID。 
C3的编辑风格:自定义,调用jsp中定义好的js函数。
 
2. 子窗口页面(child.jsp):该页面完成员工id(empID)填报值选择,并将填报值返回给主窗口。该页面嵌入参数表单:sub.raq。 
部分代码: 
<table align=”center”><tr ><td> 
<report:param name=”form1″ paramFileName=” sub.raq” 
needSubmit=”no” 
/></td></tr> 
<tr><td align=”top”><input type=”submit” name=”Submit” value=”确定” onclick=’onOK();’ />  <input type=”submit” name=”Submit” value=”取消” onclick=’javascript:form1.reset();’ /></td> 
</tr></table> 
<script type=”text/javascript”> 
function onOK(){ 
var runValue=new Array; 
//获取填报表中变量名为empname的单元格的值返回给主窗口 
runValue[0]=document.getElementById(“empname”).value; 
window.returnValue = runValue; 
window.close();} 
</script>
参数表单:sub.raq
 
B1单元格编辑风格为下拉数据集,B1单元格的变量名为empname 
实现效果: 
初始页面:
 
子窗口:
 
选择雇员并点击确定,子窗口关闭,主窗口将根据返回的id得到员工基本信息。