在DWZ開發過程中經常會遇到的一種情況就是:在navTab頁面中通過a標簽打開一個dialog,在dialog層進行操作后,需要對該dialog層進行必要的刷新操作。
1.首先講一下思路:
在非dialog頁面中,也就是navTab頁面中,將傳遞rel的值作為刷新的途徑。在那種情況下,rel值為navTab的navTabId,所以在dialog中,只要將dialogId獲取到,並作為rel值在dialog層傳遞即可。
2.其次給大家看看我的操作圖:
圖1-點擊navTab上的修改,進入一級dialog頁面
圖2-點擊一級dialog的修改操作,進入二級dialog的詳情修改頁面
說明:我的操作就是:打開navTab上的修改頁面,顯示一個dialog層的列表信息,然后再在一級dialog上點擊修改,打開二級dialog,在二級dialog上修改完畢后,關閉當前的二級dialog,然后刷新一級dialog。
3.步驟:
(1)在a鏈接中指定rel值(即將打開的dialog層的ID):

<a href ="score.do?method=goQueryRuleDetail" target="dialog" rel="firstDialogId" width="950" height="380" title="標題">修改</a>
(2)在dwz.dialog.js中修改部分代碼($.pdialog上一行):

var currentDialogId = "";//2013-07-19 lucky add
找到 open:function(url, dlgid, title, options),給剛剛聲明的currentDialogId賦值
open:function(url, dlgid, title, options) { currentDialogId = dlgid;//新增部分,賦值 var op = $.extend({},$.pdialog._op, options); var dialog = $("body").data(dlgid);
View Code
在open節點之后,新增節點
getcurrentDialogId:function(){//獲取當前窗口ID return currentDialogId; },
View Code
(3)一級dialog頁面,修改鏈接:

<a href="score.do?method=goModifyPage" target="dialog" id="goToModify">修改</a>
給該修改鏈接添加rel值:

<script type="text/javascript"> $(function(){ var currentDialogId = $.pdialog.getcurrentDialogId();//獲取當前窗口的ID var tempHref = $("#goToModify").attr("href"); $("#goToModify").attr("href",tempHref + "&rel="+currentDialogId); }); </script>
(4)經過后台的傳遞,二級dialog頁面也已經有rel的值了。此時,要寫一個二級dialog提交后的回調函數。在dwz.ajax.js里面添加如下代碼:

* dialog層之上的dialog(二級dialog)表單提交回調函數 * 服務器回轉dialogId,可以重新載入指定的dialogId,statusCode=DWZ.statusCode.ok表示操作成功, 自動關閉當前dialog * form提交后返回json數據結構,json格式和navTabAjaxDone一致 * @param json */ function dialogLayerAjaxDone(json){ DWZ.ajaxDone(json); if (json.statusCode == DWZ.statusCode.ok){ if (json.dialogId){ var dialog = $("body").data(json.dialogId); $.pdialog.reload(json.forwardUrl, {dialogId: json.dialogId}); } $.pdialog.closeCurrent(); } }
(5)二級dialog表單form回調函數:

onsubmit="return validateCallback(this, dialogLayerAjaxDone);"
注:二級dialog提交至后台后,后台需指定forwardUrl(重載URL)和dialogId(需要刷新的一級dialogId),返回的JSON數據格式為:

{ "statusCode":"",//狀態代碼 "message":"", "dialogId":"",//需要刷新的一級dialogId "callbackType":"", "forwardUrl":"", "url":"", "urldata":"" }