父页面调用子页面方法, 子页面加载父页面传送的数据
先看效果图就明白需求了:
点击search查询结果集, 点击某一条将该条的其他信息分别加载到tab1和tab2中, 即net bill和other amount这两个tab.
点击clear清空查询条件及datagrid, 同时清空tab1和tab2内的数据.
父页面:
- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- 2 <%@include file="/context/mytags.jsp"%>
- 3 <t:base type="jquery,easyui,tools,DatePicker"></t:base>
- 4 <div>
- 5 <div class="easyui-layout" fit="true">
- 6 <div region="center" style="padding:0px;border:0px">
- 7 <t:datagrid name="topupRecordList" sortName="accNo" pagination="true" fitColumns="true" checkbox="true" singleSelect="true"
- 8 title="Topup Record List" actionUrl="topupRecordController.do?datagrid" pageSize="5"
- 9 idField="id" fit="true" queryMode="group" filter="true" autoLoadData="false">
- 10 <t:dgCol align="center" title="id" field="id" hidden="true" width="120"></t:dgCol>
- 11 <t:dgCol align="center" title="Account Number" field="accNo" width="120"></t:dgCol>
- 12 <t:dgCol align="center" title="Terminal" field="tmnlCode" width="120"></t:dgCol>
- 13 <t:dgCol align="center" title="Counter" field="counterId" width="120"></t:dgCol>
- 14 <t:dgCol align="right" title="Topup Amt" field="topupAmt" width="120"></t:dgCol>
- 15 <t:dgCol align="center" title="Transaction Type" field="txnStatus" dictionary="TXN_STATUS,typecode,showname" width="120"></t:dgCol>
- 16 <t:dgCol align="center" title="Top-up Date" field="txnDate" formatter="yyyy-MM-dd hh:mm:ss" width="120"></t:dgCol>
- 17 <t:dgCol align="center" title="Operator name" field="cashierId" width="120"></t:dgCol>
- 18 <t:dgCol align="center" title="Payment Mode" field="payMode" dictionary="PAY_MODE,typecode,showname" width="120"></t:dgCol>
- 19 <t:dgCol align="right" title="Net Bill" field="prepaidAmt" hidden="true" width="120"></t:dgCol><%--隐藏字段--%>
- 20 <t:dgCol align="right" title="Credit" field="curBal" hidden="true" width="120"></t:dgCol>
- 21 <t:dgCol align="right" title="Arrear Amount" field="arrearAmt" hidden="true" width="120"></t:dgCol>
- 22 </t:datagrid>
- 23 <div id="topupRecordListtb" style="padding: 3px; height: 65px;">
- 24 <div style="float: left;" class="searchColums">
- 25 <table id="searchtab">
- 26 <tr>
- 27 <td align="left">
- 28 Account Number:
- 29 <input class="inuptxt ac_input" type="text" id="accNo" name="accNo" style="width: 150px">
- 30 </td>
- 31 <td align="left">
- 32 Center:
- 33 <select id="tmnlCode" name="tmnlCode" style="width: 150px">
- 34 <option selected value="">Please Select</option>
- 35 </select>
- 36 </td>
- 37 <td align="right">
- 38 Counter:
- 39 <select id="counterId" name="counterId" style="width: 145px">
- 40 <option selected value="">Please Select</option>
- 41 </select>
- 42 </td>
- 43
- 44 <td align="right">
- 45 Operator name:
- 46 <input class="inuptxt ac_input" type="text" id="cashierId" name="cashierId">
- 47 </td>
- 48 </tr>
- 49 <tr>
- 50 <td align="right">
- 51 Topup Time:
- 52 <input class="Wdate" onClick="WdatePicker({dateFmt:\'yyyy-MM-dd HH:mm:ss\'})" type="text" style="width: 150px" id="txnDate1" name="txnDate1" ignore="ignore" value="<fmt:formatDate value=\'${customerInfoPage.sheduledActivationDate}\' type="date" pattern="yyyy-MM-dd HH:mm:ss"/>" />
- 53 </td>
- 54 <td align="right">
- 55 to
- 56 <input class="Wdate" onClick="WdatePicker({dateFmt:\'yyyy-MM-dd HH:mm:ss\'})" type="text" style="width: 150px" id="txnDate2" name="txnDate2" ignore="ignore" value="<fmt:formatDate value=\'${customerInfoPage.sheduledActivationDate}\' type="date" pattern="yyyy-MM-dd HH:mm:ss"/>" />
- 57 </td>
- 58 <td align="right">
- 59 Topup Amount:
- 60 <input class="inuptxt ac_input" type="text" id="topupAmt" name="topupAmt"
- 61 <%--onkeyup= "if(!/^[0-9]{1,}(?:.[0-9]{0,2})?$/.test(this.value)){alertTip(\'Only Numbers are allowed, with two decimal places left.\');this.value=\'\';}"--%>
- 62 >
- 63 </td>
- 64 <td align="left">
- 65 SGD
- 66 </td>
- 67 </tr>
- 68 </table>
- 69 </div>
- 70 <div align="right">
- 71 <a href="#" class="easyui-linkbutton" iconCls="icon-search" onclick="topupRecordListsearch()">Search</a>
- 72 <a href="#" class="easyui-linkbutton" iconCls="icon-reload" onclick="searchReset()">Clear</a>
- 73 </div>
- 74 </div>
- 75 </div>
- 76 </div>
- 77 </div>
- 78 <div style="height:330px;width: 100%;overflow: hidden" name="tt" id="tt" fit="true"><%-- class="easyui-panel"--%>
- 79 <t:tabs id="tabsOne" iframe="false" tabPosition="top" fit="false">
- 80 <t:tab iframe="topupRecordController.do?netBill" title="Net Bill" icon="" id="tab1" heigth="140px"></t:tab>
- 81 <t:tab iframe="topupRecordController.do?otherAccount" title="Other Amount" icon="" id="tab2" heigth="140px"></t:tab>
- 82 </t:tabs>
- 83 </div>
- 84 <script type="text/javascript">
- 85 //隐藏滚动条,固定高度,可根据表单字段数量调整
- 86 $("body").css({"overflow": "hidden","height": "500px;","margin-top":"0px","margin-left":"0px"});
- 87
- 88 //重置
- 89 function searchReset() {
- 90 $(":input").each(
- 91 function () {
- 92 $(this).val("");
- 93 }
- 94 );
- 95 $("#topupRecordList").datagrid(\'loadData\',{total:0,rows:[]});
- 96
- 97 iframe1 = $("#tab1")[0].contentWindow;
- 98 iframe2 = $("#tab2")[0].contentWindow;
- 99 iframe1.searchReset1();
- 100 iframe2.searchReset2();
- 101
- 102 }
- 103
- 104 //页面初始化加载counter和terminal信息(激活状态的)
- 105 var counterList = \'${counterList}\';
- 106 var terminalList = \'${terminalList}\';
- 107 $(function () {
- 108 var counterObj = $.parseJSON(counterList);
- 109 var terminalObj = $.parseJSON(terminalList);
- 110 if (counterObj) {
- 111 for (var i = 0; i < counterObj.length; i++) {
- 112 $("#counterId").append("<option value=\'" + counterObj[i].code + "\'>" + counterObj[i].name + "</option>");
- 113 }
- 114 }
- 115 if (terminalObj) {
- 116 for (var i = 0; i < terminalObj.length; i++) {
- 117 $("#tmnlCode").append("<option value=\'" + terminalObj[i].code + "\'>" + terminalObj[i].name + "</option>");
- 118 }
- 119 }
- 120 })
- 121
- 122 //tab页数据
- 123 $("#topupRecordList").datagrid({
- 124 onSelect: function (index, row) {
- 125 $("#tab1")[0].contentWindow.getRecordList1(row);
- 126 $("#tab2")[0].contentWindow.getRecordList2(row);
- 127 }
- 128 });
- 129
- 130 //查询充值记录列表
- 131 function topupRecordListsearch() {
- 132 if (true) {
- 133 var queryParams = {};
- 134 var flag = true;
- 135
- 136 var accNo = $("#accNo").val();
- 137 var tmnlCode = $("#tmnlCode").val();
- 138 var counterId = $("#counterId").val();
- 139 var cashierId = $("#cashierId").val();
- 140 var txnDate1 = $("#txnDate1").val();
- 141 var txnDate2 = $("#txnDate2").val();
- 142
- 143 //金额格式校验
- 144 var topupAmt = $("#topupAmt").val();
- 145 var longitudeRegExp = /^\d+(\.\d+)?$/;
- 146 var reg = new RegExp(longitudeRegExp);
- 147 if(topupAmt!=\'\'){
- 148 if (!reg.test(topupAmt)) {
- 149 alertTip("金额格式错误,请重新输入");
- 150 flag = false;
- 151 }
- 152 }
- 153
- 154 if (!flag) {
- 155 return false;
- 156 }
- 157 $(\'#topupRecordList\').datagrid({
- 158 url: \'topupRecordController.do?datagrid&field=accNo,tmnlCode,counterId,topupAmt,txnStatus,txnDate,cashierId,payMode,prepaidAmt,curBal,arrearAmt,\',
- 159 pageNumber: 1,
- 160 queryParams: {
- 161 accNo:accNo,
- 162 tmnlCode:tmnlCode,
- 163 counterId:counterId,
- 164 cashierId:cashierId,
- 165 txnDate1:txnDate1,
- 166 txnDate2:txnDate2,
- 167 topupAmt:topupAmt
- 168 }
- 169 });
- 170 }
- 171 }
- 172
- 173 </script>
View Code
子页面:
tab1:
- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- 2 <%@include file="/context/mytags.jsp"%>
- 3 <t:base type="jquery,easyui,tools,DatePicker"></t:base>
- 4 <div class="easyui-layout" fit="true">
- 5 <div region="center" style="padding:0px;border:0px">
- 6 <t:datagrid name="topupRecordList1" checkbox="false" sortName="accNo" pageSize="5" pagination="false" fitColumns="true" singleSelect="true"
- 7 title="" actionUrl="topupRecordController.do?otheraccountDatagrid" height="189px" autoLoadData="false">
- 8 <t:dgCol align="center" title="Account Number" field="accNo" width="120"></t:dgCol>
- 9 <t:dgCol align="right" title="Net Bill" field="prepaidAmt" width="120"></t:dgCol>
- 10 <t:dgCol align="right" title="Credit" field="curBal" width="120"></t:dgCol>
- 11 <t:dgCol align="center" title="Top-up Date" field="txnDate" formatter="yyyy-MM-dd hh:mm:ss" width="120"></t:dgCol>
- 12 </t:datagrid>
- 13 </div>
- 14 </div>
- 15 <script type="text/javascript">
- 16
- 17 function searchReset1() {
- 18 $("#topupRecordList1").datagrid(\'loadData\',{total:0,rows:[]});
- 19 }
- 20
- 21 function getRecordList1(rows){
- 22 var rowtotal = $(\'#topupRecordList1\').datagrid(\'getRows\');
- 23 if(rowtotal.length>0){
- 24 clearRow();
- 25 }
- 26 $(\'#topupRecordList1\').datagrid(\'insertRow\',{
- 27 index: 0, // 索引从0开始
- 28 row: {
- 29 accNo: rows.accNo,
- 30 prepaidAmt: rows.prepaidAmt,
- 31 txnDate: rows.txnDate,
- 32 curBal: rows.curBal
- 33 }
- 34 });
- 35 }
- 36
- 37 function clearRow() {
- 38 $(\'#topupRecordList1\').datagrid(\'deleteRow\', 0);
- 39 }
- 40
- 41 </script>
View Code
tab2:
- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- 2 <%@include file="/context/mytags.jsp"%>
- 3 <t:base type="jquery,easyui,tools,DatePicker"></t:base>
- 4 <div class="easyui-layout" fit="true">
- 5 <div region="center" style="padding:0px;border:0px">
- 6 <t:datagrid name="topupRecordList2" checkbox="false" sortName="accNo" pageSize="5" pagination="false" fitColumns="true" singleSelect="true"
- 7 title="" actionUrl="topupRecordController.do?otheraccountDatagrid" height="189px" autoLoadData="false">
- 8 <t:dgCol align="center" title="Account Number" field="accNo" width="120"></t:dgCol>
- 9 <t:dgCol align="center" title="Fees Type" field="feesType" width="120"></t:dgCol><%--缴费类型 arear--%>
- 10 <t:dgCol align="right" title="Arrear Amount" field="arrearAmt" width="120"></t:dgCol>
- 11 <t:dgCol align="center" title="Top-up Date" field="txnDate" formatter="yyyy-MM-dd hh:mm:ss" width="120"></t:dgCol>
- 12
- 13 </t:datagrid>
- 14 </div>
- 15 </div>
- 16 <script type="text/javascript">
- 17
- 18 function searchReset2() {
- 19 $("#topupRecordList2").datagrid(\'loadData\',{total:0,rows:[]});
- 20 }
- 21
- 22 function getRecordList2(rows){
- 23 var rowtotal = $(\'#topupRecordList2\').datagrid(\'getRows\');
- 24 if(rowtotal.length>0){
- 25 clearRow();
- 26 }
- 27 $(\'#topupRecordList2\').datagrid(\'insertRow\',{
- 28 index: 0, // 索引从0开始
- 29 row: {
- 30 accNo: rows.accNo,
- 31 feesType: \'Arear\',
- 32 arrearAmt: rows.arrearAmt,
- 33 txnDate: rows.txnDate
- 34 }
- 35 });
- 36 }
- 37
- 38 function clearRow() {
- 39 $(\'#topupRecordList2\').datagrid(\'deleteRow\', 0);
- 40 }
- 41
- 42 </script>
View Code
总结:
父页面调用子页面方法:tab1和tab2是iframe的id.
- iframe1 = $("#tab1")[0].contentWindow;
- iframe2 = $("#tab2")[0].contentWindow;
- iframe1.searchReset1();
- iframe2.searchReset2();
子页面加载父页面传送的数据:rows即是父页面传送的数据.
- function getRecordList1(rows){
- var rowtotal = $(\'#topupRecordList1\').datagrid(\'getRows\');
- if(rowtotal.length>0){
- clearRow();
- }
- $(\'#topupRecordList1\').datagrid(\'insertRow\',{
- index: 0, // 索引从0开始
- row: {
- accNo: rows.accNo,
- prepaidAmt: rows.prepaidAmt,
- txnDate: rows.txnDate,
- curBal: rows.curBal
- }
- });
- }
感谢:https://www.cnblogs.com/it-xcn/p/5896231.html
https://blog.csdn.net/liu4071325/article/details/55657044