搜索文章

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 快逸报表与web应用结合时的页面跳转方式介绍

快逸报表与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”(默认),以此确定超链接在网页上显示的目标窗口

 

快逸报表与web应用结合时的多种页面跳转介绍11.png

 

 

二、        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

现在我们遇到了这样一个问题:当点击提交按钮,数据提交以后,需要跳转到下一页面,于是我们在报表中这样设计这个按钮,

快逸报表与web应用结合时的多种页面跳转介绍22.png

调用的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提交数据以后,是否返回录入页面并刷新页面,yesnoURL,若为URL,则提交后将定位到此指定的URL。也就是说,这个标签是在数据提交以后才执行页面跳转的。示例如下:

       backAndRefresh=“showReport_all.jsp?raq=task_yuyue.raq”

 

至此,这个问题解决。

但是如果页面上有两个或两个以上的按钮,点击一个要提交数据并跳转到另一个页面,点击另外的提交按钮时不执行页面跳转,这时backAndRefresh标签似乎显得有些力不从心。         如何满足如此复杂的需求?我将在下一篇文章中介绍使用填报监听类解决这个问题,以及另外一种表单提交方式,敬请关注。

本文标签: