模态/非模态 窗口关闭自己同时刷新父页面

来源:互联网 发布:北京江水平 知乎 编辑:程序博客网 时间:2024/04/29 15:27

模态窗口:
-------------------------------------------------------------------------------------------------------------------
网上搜了很长的时间,都不行。人在崩溃的边缘。最后总算找到了方法,虽然很简单,但是耗费了我很长时间!模态窗口不能用opener.location.reload.这个只是在非模态窗口下可以。

1 父窗体Wab.aspx:注意第二个参数为window.这个不能改。作用是把自己window对象传到模态子窗体去。
function opn(aid,ispublic){
var DATE=new Date();
   var  iWidth=900; //模态窗口宽度
  var  iHeight=450;//模态窗口高度
  var  iTop=(window.screen.height-iHeight)/2;
  var  iLeft=(window.screen.width-iWidth)/2;
window.showModalDialog ("WabAdd.aspx?tmp="+DATE+"&aid="+aid+"&ispublic="+ispublic, window,"dialogWidth:"+iWidth+" ,dialogHeight:"+iHeight+",dialogtop:"+iTop+",dialogleft:"+iLeft)

   } 

2 模态子窗体WabAdd.aspx:注意assign后面的参数,指回父窗体。实现刷新。
<head>
<base  target="_self" />
</head>
<body onUnload="window.dialogArguments.location.assign('Wab.aspx')" style="margin:0px;">

ButtonClick事件执行JS的Window.close。就可以了。
注意:不Close无法刷新父窗体。其实如果在assign('Wab后面加一些参数,是可以局布赋值的。但不是正道。感觉通用起来麻烦一些。
这种方法适合:弹出页面必须为模态;关闭之后,父窗体整体刷新,而非部分刷新

非模态窗口
-------------------------------------------------------------------------------------------------------------
1 父页面.aspx 
function openwin(namec,idc)
               { window.open ("../Base/ChoosePerson.aspx?namec="+namec+"&idc="+idc, "newwindow", "height=400, width=500, toolbar=no , menubar=no, scrollbars=no, resizable=no, location=no, status=no,top=100") }

这两上参数,用来传控件名,方便子页面往回传值。

2 子页面.ASPX
  function setBack(namec,idc)
        {
        window.opener.document.getElementById(namec).value="卞吉东";
        window.opener.document.getElementById(idc).value="bianjd";
        window.close();
        }

子页面.VB
用来接收QueryString,知道关闭本页面之前,为父页面哪些控件赋值。
适合情况:大多数情况,可以局布刷新赋值。

原创粉丝点击