甲供材页面开发

页面
一个皮页面(kpajc7.jsp),3个tab子页面,两个弹出框页面,点击tab标签跳转页面,皮页面中tab标签以及js代码为:

1 <div id="kpajc7ListTab" style="height: 95%">
2         <iframe name="kpajc7List_<%=sessionId %>" id="kpajc7ListID" width="100%" height="92%"  frameborder=0
3                 src="/erp/kpa/do?_pageId=kpajc7&_action=I&_sessionId=<%=sessionId%>"></iframe>
4     </div>
 1     var tabObj = new TabTable("合同清单", kpajc7c1ListTab,showTab1);
 2     tabObj.add("结算甲供材明细", kpajc7ListTab, showTab2);
 3     tabObj.add("IN甲供材明细", kpajc7InListTab,showTab3);
 4     tabObj.setHeight(80);
 5     tabObj.setTabWidth(15);
 6     tabObj.setDrawIn('showDiv');
 7     tabObj.draw();
 8 function showTab2() {
 9         window.frames["kpajc7List_<%=sessionId%>"].form1.kpmc1no_qry.value = document.getElementById("kpmc1no").value;
10         window.frames["kpajc7List_<%=sessionId%>"].form1.action="/erp/kpa/do?_pageId=kpajc7&_action=I";
11         window.frames["kpajc7List_<%=sessionId%>"].form1.target="kpajc7List_<%=sessionId%>";
12         window.frames["kpajc7List_<%=sessionId%>"].form1.submit(); 
13         tabObj.show(kpajc7ListTab);
14     }

前端数据提交给后台的两种方式(table表单提交/js提交):

1.表单提交(使用中冠api提供的标签),需要在jsp页面开头用java代码写好target和formAction

<%
    String target = "kpajc7List_"+sessionId;
    String formAction = "/erp/kpa/do?_pageId=kpajc7&_sessionId="+sessionId;
%>
<de:btn action="m" class="btn btn-success"
                    style="align:center" value="合并"/>

2.js提交(点击事件调用js代码,也需要在jsp开头用java代码写好target和formAction)

function cancel(){
        form1._action.value = "C";
        form1.submit();
    } 

点击按钮弹框(走后台,弹出一个jsp页面,一般用于新增一条数据或者针对某一条数据进行修改)

 1 function create() {
 2         var w = screen.availWidth * 98/100 ;
 3         var h = screen.availHeight * 70/100 ;
 4         var kpmc1no = document.getElementById("kpmc1no_qry").value;
 5         var url="/erp/kpa/do?_pageId=kpajc7InMaster&_action=I&_sessionId="+sessionId+"&flag=N&kpmc1no=" +kpmc1no;
 6         var name="mshjFinalAmtMasterCreateNew";
 7         var features = "top = 80, left = 1,width="+w+",height="+h+",menubar=no,scrollbars=no,resizable=yes,status=yes";
 8         var winObj=window.open(url,name,features); 
 9         var loop = setInterval(function() {     
10             if(winObj.closed) {    
11                 clearInterval(loop);  
12                 reflash(cimp1no);
13               }    
14         }, 1);  
15     }

隐藏域使用技巧

1.点击事件通过js将数据填充到皮页面或者本页面的隐藏域中(在某些情况下将数据添加到request流中,更方便地传给后台的一种方式)

function query() {
        var cnmdesc = document.getElementById("cnmdesc").value;
        window.parent.document.getElementById("cnmdesc").value = cnmdesc;
        window.parent.showTab3();
    }

对于数据是通过本页面java中的sql查询出来的情况(没有走后台),此时无法通过checkbox将选择的某几条数据发送给后台(也就是无法通过List<> list = (List<>) (infoIn.getVOs("V1")==null?new VO() : infoIn.getVOs("V1"))这种方式获取前台数据),此时可以通过js将checkbox中选择的数据的唯一标志(id)填充到页面的隐藏域中,再发送给后台,此时后台获取到数据的唯一标志,可以查询到该条数据

 1 function check(){
 2         var myBox = document.getElementsByName("box");
 3         var matrlNo = "";
 4         for(var i=0; i<myBox.length; i++){
 5           if(myBox[i].checked){
 6               matrlNo = matrlNo + "," + document.getElementById("matrlNo"+i).value;
 7           }
 8         }
 9         document.getElementById("matrlNo").value = matrlNo;
10         form1._action.value = "R";
11         form1.submit();
12     } 

对于进入后台后再次弹出新页面(业务需要在本页面显示)的情况(sessionId丢失)(对于所有情况能加上sessionId就加上,页面中也需要加上session的隐藏域:<de:text type="hidden" name="_sessionId" value="<%=sessionId %>"/>):
1.有可能是皮页面的tab子页面标签中的sessionId没有写,也有可能是js代跳转中没有加sessionId

<div id="kpajc7ListTab" style="height: 95%">
        <iframe name="kpajc7List_<%=sessionId %>" id="kpajc7ListID" width="100%" height="92%"  frameborder=0
                src="/erp/kpa/do?_pageId=kpajc7&_action=I&_sessionId=<%=sessionId%>"></iframe>
    </div>
```

```
var sessionId="<%=sessionId%>";
function showTab2() {
        window.frames["kpajc7List_<%=sessionId%>"].form1.kpmc1no_qry.value = document.getElementById("kpmc1no").value;
        window.frames["kpajc7List_<%=sessionId%>"].form1.action="/erp/kpa/do?_pageId=kpajc7&_action=I";
        window.frames["kpajc7List_<%=sessionId%>"].form1.target="kpajc7List_<%=sessionId%>";
        window.frames["kpajc7List_<%=sessionId%>"].form1.submit(); 
        tabObj.show(kpajc7ListTab);
    }

2.有可能是页面中开头的formAction和target里没有sessionId,在form表单中加上target属性

String formAction="/erp/kpa/do?_pageId=kpajc7InMaster&_sessionId="+sessionId;
    String formTarget="kpajc7InMaster_"+sessionId;
posted @ 2019-12-30 10:20  leviH  阅读(137)  评论(0编辑  收藏  举报