window.showModalDialog怎么刷新父窗口 我希望触发父窗口回发事件,可以让GridView显示刚刚更新的数据

解决方案 »

  1.   

    showModalDialog 兼容不好,可以考虑用div 模拟
      

  2.   

    我现在就是用window.showModalDialog这个能给个方法嘛
      

  3.   

    一.刷新父窗口的方法:
       A.使用window.returnValue给父窗口传值,然后根据值判断是否刷新。      在window.showModalDialog窗口页面中用window.returnValue方式设置返回值;
          比如:window.returnValue='refresh';
        
       B。在写window.showModalDialog弹出窗口函数时,定义个变量,然后根据变量值进行操作父窗口的操作;
       例如:var winPar=window.showModalDialog(urls,'ERPWINDOWS','dialogWidth='+widths+'px;dialogHeight='+heigths+'px;status=no;center=yes;scroll=no');
      if(winPar == "refresh")
           window.location.reload();//当window.showModalDialog窗口关闭时执行
             winPar为A步骤给showModalDialog窗口设置的返回值  总结:由于window.showModalDialog函数打开一个IE的模式窗口(就是打开后不能操作父窗口,只能等模式窗口关闭时才能操作),
         
            所以想要刷新父窗口只能在模式窗口关闭后执行。用window.returnValue可以向父窗口传值,这样一来可以用从模式窗口向父窗口传递值,
     
     然后根据值判断操作父窗口的方式来刷新。这样在任何关闭了模式窗口后父窗口都会自动刷新.二.刷新模式本窗口
       showModalDialog窗口与window.open打开的窗口刷新本窗口时不同,showModalDialo窗口也不能用F5刷新,也没有右键操作
       A. 在模式窗口页面中加入:      
          <base target="_self"> //在html和body之间
          <a id="reload" href="本页面url" style="display:none"></a>   B. 在需要执行刷新操作的地方执行以下js:
            reload.click();//reload为A中隐藏a标签的id,当然可以换成其它名称
    三。注意事项    在点击window.showModalDialog窗口的链接的时候会打开新窗口,想要阻止打开新窗口,需要在窗口页面中的html和body之间
        加入: <base target="_self" />即可
      

  4.   

    把父窗口的window对象传过来window.showModalDialog("abc.aspx",window,..) 然后子窗口中用 父窗口window对象.父窗口函数 即:window.dialogArguments.FunctionName(param1,param2...)