填报表新弹出页面回写数据
解决方案:
润乾报表单元格支持html事件,并且润乾报表展现后是纯html格式,这样的话就可以通过页面间的处理实现该需求。
一:定制raq,主要增加html事件,如图:
在C3单元格的html事件表达式中写入“onmouseup=\”show_product( ‘” + B3+ “‘ );return false;\” onmouseover=\”this.style.cursor=’hand’\”",鼠标点中时调用js函数show_product,将B3单元格的值作为参数传递过去。
在显示报表的jsp页面中增加show_product函数的定义:
function show_product(num)
{
var strurl=’/demo/jsp/ld2.jsp?num=’+num
window.open(strurl,”_blank”,”Scrollbars=no,Toolbar=no,Location=no,Direction=no,titlebar=no,Resizeable=no,Width=650 ,Height=500,top=”+(window.screen.height-500)/2+”,left=”+(window.screen.width-500)/2);
return false;
}
</script>
可以看到,调用该js函数后会新弹出页面demo/jsp/ld2.jsp,这样就可以在该页面中进行数据的输入。
在ld2.jsp中实现输入框,并且要求数据能回写到原页面。
<form action=”ld.jsp” method=”get” name=”form1″>
省<input name=”sheng” type=”text”>
地区<input name=”diqu” type=”text”>
县<input name=”xian” type=”text”>
<input name=”" type=”button” onClick=”open_product_click(<%=num%>)”>
</form>
function open_product_click(num)
{
opener.document.getElementById(“report1_C”+(num+2)).value=form1.sheng.value;
opener.document.getElementById(“report1_C”+(num+2)).innerText=form1.sheng.value;
opener.document.getElementById(“report1_D”+(num+2)).value=form1.diqu.value;
opener.document.getElementById(“report1_D”+(num+2)).innerText=form1.diqu.value;
opener.document.getElementById(“report1_E”+(num+2)).value=form1.xian.value;
opener.document.getElementById(“report1_E”+(num+2)).innerText=form1.xian.value;
window.close();
}
</script>
这样就能实现客户的业务需求,如图:
弹出页面:
数据回写:
具体文件见附件。