DWZ中刷新dialog的方案解決


在DWZ中進行ajax表單提交后,通過回調函數來返回狀態結果,以及返回是否需要刷新父頁的navTabId。

DWZ給我們提供了兩個回調函數,一個是子窗口為navTab的navTabAjaxDone,一個是子窗口為dialog的dialogAjaxDone,但這兩個回調函數都有同一樣的缺陷:就是父窗口必須是navTab,也就是說只能刷新navTab,如果父窗口為dialog,則此父dialog是刷新不了的。

如果我們是在一個彈出的dialog中,進行添加、刪除和修改操作,操作完成后,這個dialog是無法刷新的。刪除就在此dialog中完成,刪除后只刷新不關閉當前dialog。添加和修改操作可能要再彈出一個dialog來完成,也就是說出現了二級dialog,操作完成后,需要關閉當前子dialog,刷新父dialog。

征對這種情況 ,我們自己再添加一個回調函數,來適應這種情況需要。

打開DWZ.ajax.js這個文件,找到dialogAjaxDone這個函數,在它的下方,我們添加一個新回調函數,假設取名為dialogAjaxDoneFather;

/*在對話框中操作數據,並刷新對話框*/
function dialogAjaxDoneFather(json) {
    DWZ.ajaxDone(json);
    if (json.statusCode == DWZ.statusCode.ok) {
        if (json.navTabId) {
            var dialog = $("body").data(json.navTabId);
            $.pdialog.reload(dialog.data("url"), { data: {}, dialogId: json.navTabId, callback: null })
        }
        if ("closeCurrent" == json.callbackType) {
            $.pdialog.closeCurrent();
        }
    }
}

這樣我們在dialog中進行ajax表單提交,就可以使用這個dialogAjaxDoneFather回調函數了。

刪除操作:

<li><a class="delete" href="demo/delUser?id={uid}" callback="dialogAjaxDoneFather" target="ajaxTodo" title="確定要刪除嗎?"><span>刪除用戶</span></a></li>

添加和修改的Form標記中

<form method="post" action="demo/editUser" class="pageForm required-validate" onsubmit="return validateCallback(this, dialogAjaxDoneFather)">

在回調json中,注意一定要返回需要刷新的父dialog的id,即

"navTabId":"dialogId"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM