【急急急】一个弹出新页面获取action中传递过来的值的问题,在线等
项目用的是ssh框架,这是一个表报统计模块
问题分两部分:
【1】.父页面提交查询条件(月份),然后传递给action查询相关数据,然后打开一个新的页面(需求要求必须要新打开一个页面),新打开的页面接收action中传递回来的值并展示出来,请问怎么实现?我是这样做的,在父页面里面把查询条件传递给要展示数据的子页面,然后子页面加载的时候把查询条件传递给action,子页面用window.open打开,sturts2的配置文件里的页面跳转就是跳转到这个子页面来的,可是这样有个问题,在FireBug下的html中能看得数据,但是在window.open打开的页面中却没有数据;
PS:对话框考虑过,不过那个不符合需求。
【2】.数据的展示如图,图片里的项目名称,事由1到7,以及子项目名称和数据都是动态生成的,这样的表格如何动态生成?主要的问题是迭代的时候项目名称只需要迭代一次,而其他的需要迭代很多次,这样的表格怎么生成?
跪求高手赐教,非常感谢
------解决方案--------------------
------解决方案--------------------1: 我觉得 这个 应该 异步去获取数据 而不走STRUTS2的流程
2: 这个。。。
顺便说一下 你这个需求 设计 不如 直接查询后 弹出个EXCEL展示
------解决方案--------------------
------解决方案--------------------redirect方式的话得用session了。
正常的话,forward方式下,request在window.open下的页面应该好用。
然后子页面加载的时候把查询条件传递给action,子页面用window.open打开??
LZ 上面这句话的代码能否帖下?
------解决方案--------------------lz这要说那是提交月份后的数据没有返回到前台页面上来吗、?这要你要看看你跳转的方式是那种?
2个问题那个格式是excel还是页面形式的?如果是excel的那在后台代码迭代的时候就要控制合并表格了;若是以页面形式展示的话,在页面迭代的时候会有个cont属性记录迭代次数的,如何把那一<td>标签跨cont行就行了
------解决方案--------------------
1. 我觉得很简单,你用window.open打开的不就是父子页面吗?去古哥一下我记得有window.parent可以获取到父页面的方法,参数,并且可以调用父页面的方法执行,父页面也可以控制子页面的方法执行,这个古哥一下就可以找到了。
2. 动态生成表格的问题,其实也挺简单的,你说的项目名称只要生成一次。代码你改改,动态生成应该没啥问题的,以前我做动态生成考核表比你这个更复杂都可以做出来。
JScript code
<html>
<head>
<script>
function generatorTable(rows){
/*var ss=[{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"},
{"项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"}];*/
var ss=["项目名称","子项目1","数据","数据","数据","数据","数据","数据","数据"];
var tabs='<table id="tb1" border="1">';
var trs='';
for(var i=0;i<rows;i++){
var tr='';
tr+='<tr>';
for(var j=0;j<ss.length;j++){
if(i==0 && j==0){
tr+='<td rowspan="'+rows+'">'+ss[j]+'</td>'
}else{
if(j!=0)
tr+='<td>'+ss[j]+'</td>';
}
}
alert(tr);
trs+=tr;
}
tabs+=getHead();
tabs+=trs;
tabs+='</table>';