快逸报表与web应用结合时的页面跳转方式介绍
快逸报表与web应用的良好结合性已经越来越被大家所熟知,在使用报表的同时,如何设计更加友好、灵活的操作界面成为了大家越来越普遍的需求。其中页面的跳转方式就是这些普遍需求的一种。
在接下来的介绍中,你将看到报表与web应用结合时,灵活的页面的页面跳转方式。
一、 报表中的超链接
如果你只是简单的想实现页面跳转,那为什么不试试报表内部提供的超链接呢?
报表超链接的详细说明请参考我们的教程,这里要着重提到的是超链接。在超链接的表达式中,我们不仅可以直接指定页面链接,如:“mis2/reportcenter/showCustomer.jsp?arg=/customer_project_arg.raq&cell_ID=D9&raq=/customer_project.raq&cell_ID1=D11&cell_ID2=A1&cell_ID3=D13&refreshFather=yes”,这种标准的超链接,还可以调用JS函数,调用方式如:“javascript:changeCellValue(‘”+@cell_ID+”‘,’”+B2+”‘,’”+A2+”‘,’”+@cell_ID1+”‘,’”+D2+”‘,’”+D2+”‘,’”+@cell_ID2+”‘,’”+H2+”‘,’”+K2+”‘,’”+@cell_ID3+”‘,’”+E2+”‘,’”+E2+ “‘)”,其中“+”之间的都为报表参数和单元格内容。
而超链接窗口比较常见的应用是在超链接窗口的属性值中填入“_blank”或“_self”(默认),以此确定超链接在网页上显示的目标窗口。
二、 JS常用跳转方式
上面我们提到了在超链接中调用JS函数,在此就简单介绍一下在JS中常用的页面跳转方式。
1、 window.location.href=”url” 转向目标页面
2、 window.open(“url”) 在新窗口中打开目标窗口
3、 window.histroy.back(-1) 返回父页面
此外,结合使用alert()、confirm()等函数,可以实现多种页面跳转方式。更详细的介绍可以参考:http://firstboy.javaeye.com/blog/575694
三、 使用报表内置标签backAndRefresh
现在我们遇到了这样一个问题:当点击提交按钮,数据提交以后,需要跳转到下一页面,于是我们在报表中这样设计这个按钮,
调用的task_time()函数如下:
function task_time(){
report1_save(); //报表内置JS函数,提交填报表
window.location.href = “showReport_all.jsp?raq=task_yuyue.raq”;
}
但是这样操作以后出现的一个问题就是,window.location.href转向实在是太快了,以至于数据还没有提交完成,页面就跳转了,当然我们在下一个页面也没办法获取刚刚提交成功的数据,所以我们自然想到了让页面延迟跳转的方法,在task_time()函数中加入:
setTimeout(function(){
window.location.href = “showReport_all.jsp?raq=task_yuyue.raq;
}, 2000); //设置页面延时2秒加载
不过由于report1_save()方法也会执行action中的跳转,所以在等待的时候,页面就跳转到action中了,所以这种方式并不能满足我们的需求。
这时,轮到backAndRefresh标签出场了,让我们来看一看这个标签的说明。backAndRefresh:提交数据以后,是否返回录入页面并刷新页面,yes或no或URL,若为URL,则提交后将定位到此指定的URL。也就是说,这个标签是在数据提交以后才执行页面跳转的。示例如下:
backAndRefresh=“showReport_all.jsp?raq=task_yuyue.raq”
至此,这个问题解决。
但是如果页面上有两个或两个以上的按钮,点击一个要提交数据并跳转到另一个页面,点击另外的提交按钮时不执行页面跳转,这时backAndRefresh标签似乎显得有些力不从心。 如何满足如此复杂的需求?我将在下一篇文章中介绍使用填报监听类解决这个问题,以及另外一种表单提交方式,敬请关注。