知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 快逸报表与web应用结合时的多种页面跳转方式介绍(一)

快逸报表与web应用结合时的多种页面跳转方式介绍(一)

快逸报表与web应用的良好结合性已经越来越被大家所熟知,在使用报表的同时,如何复杂报表设计" target="_blank" class="quieeLink1">设计更加友好、灵活的操作界面成为了大家越来越普遍的需求。其中页面的跳转方式就是这些普遍需求的一种。

在接下来的介绍中,将看到报表与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”(默认),以此确定超链接在网页上显示的目标窗口。

1.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

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

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

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

至此,这个问题解决。

但是如果页面上有两个或两个以上的按钮,点击一个要提交数据并跳转到另一个页面,点击另外的提交按钮时不执行页面跳转,这时backAndRefresh标签似乎显得有些力不从心。接下来将有后续文章介绍使用填报监听类解决这个问题,以及另外一种表单提交方式。

本文标签:
发布日期:2010/05/05
本文分类: 设计基础