ThinkPHP+DWZ, Dialog刷新问题

一.应用背景:通过第一个dialog编辑主表数据,并通过在第一个dialog上打开的第二个dialog编辑子表数据,希望在第二个dialog中的表单提交后刷新第一个dialog。

二.解决方案分析:

     方法1(引用自点击打开链接

     1)在删除按钮上添加callback属性,添加回调函数。

<a class="delete"  href="" callback="dialogAjax" target="ajaxTodo" title="确定要删除吗?" fresh="true">
     2)扩展dwz,在dwz.dialog.js中添加如下扩展代码:
reloadDialog:function(dialogId){
            var dialog = $("body").data(dialogId);
            if(dialog){
                $.pdialog.reload(dialog.data("url"),{dialogId:dialogId});
            }
        },
    3)在回调函数中使用
function dialogAjax(json){
    $.pdialog.reloadDialog("triggerList");
}
    方法1缺点:刷新后的第一个dialog的数据不全,部分multiselect数据丢失,且子表table中没有数据,原因不清楚。

    方法2(引用自点击打开链接

    1)在 dwz.min.js 中 增加新的方法

function dialogAjaxDoneThis(json){  //840206883@qq.com
DWZ.ajaxDone(json);
	if(json.statusCode==DWZ.statusCode.ok){
			if(json.navTabId){
			$.pdialog.reload(json.forwardUrl,json.navTabId);
			}
	}

}
    2)表单中增加
<input hidden name="navTabId"  type="hidden" value="DingdanCreate"> 
<input hidden name="forwardUrl"  type="hidden" value="__URL__/testfunction"> 
    3)将dialogAjaxDoneThis加入第二个dialog中表单的onsubmit中。

    方法2缺点同方法1,应该是$.pdialog.reload的问题,所以想尝试方法3。
    方法3

    原理就是将

$.pdialog.reload(json.forwardUrl,json.navTabId);

    替换成
$.pdialog.close(dialog); 参数dialog可以是弹出层jQuery对象或者是打开dialog层时的dlgId.
$.pdialog.open(url, dlgId, title, options);
    尝试一下没成功,大概是函数调用的不正确,想到在我的第一个dialog中有多个标签页,且子表所在标签页并不是第一个,即便成功,刷新后的标签将变成第一个,而且重新打开后的dialog位置也会恢复到默认位置,用户体验不好,放弃尝试。

    方法4(受启发于点击打开链接中有位哥们提到用loadUrl重载,又结合了方法2的思路)
   1)在 dwz.min.js 中 增加新的方法

function reloadDialogWin(json){ 
    DWZ.ajaxDone(json); 
    if (json.statusCode == DWZ.statusCode.ok){ 
    	var id="#"+json.navTabId;
        $(id).loadUrl(json.forwardUrl,'11',''); 
        if ("closeCurrent" == json.callbackType) { 
                $.pdialog.closeCurrent(); 
        } 
    }
}
    2)新增一个专门用来刷新第一个dialog的action:re_edit及相应的re_edit.html,且在Html文件中将默认标签页设成子表所在标签页。另外给原edit.html中的最外层div增加id="re_edit_pwps"; ( 不需要新建action和html,只要通过url传递一个默认标签序号过来,将原默认标签页的值换成currentIndex="{:I('dindex')}"就可以了

    2)表单中增加

<input hidden name="navTabId"  type="hidden" value="re_edit_pwps">
<input hidden name="forwardUrl"  type="hidden" value="__URL__/edit/id/{$vo.pid}/dindex/1或者子表所在标签页">

   3)将reloadDialogWin加入第二个dialog中表单的onsubmit中。

    方法4的优点,所有数据都完整,且窗口位置不变,标签页没有恢复至默认。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值