当前位置:编程学习 > C#/ASP.NET >>

主窗体弹出模式子窗体,关闭模式子窗体并刷新父窗体的问题.

主窗体代码
<input id="Button1" type="button" value="关闭" onclick="javascript:window.showModalDialog('Open.aspx?ID=1', this, 'dialogWidth=300px;dialogHeight=300px');" /></td>
  
子窗体代码
head 后面 <base target="_self" />
function test()
    {
  window.opener.location.reload();  
        self.close(); 
}
<input id="Button2" type="button" value="button" onclick="test();" />

为什么总是提示window.opener.location  为空或不是对象 的错误?
该怎么做? --------------------编程问答-------------------- 有人用过吗,我找不到问题在那?帮帮忙. --------------------编程问答-------------------- IE几?! --------------------编程问答-------------------- ie6 就是 2003 带的那个版本
--------------------编程问答-------------------- LZ 你试下打开非模式子窗体,有没有哪个问题 --------------------编程问答-------------------- 好的 我试一下 --------------------编程问答-------------------- 模式窗体用 dialogArguments.location.reload(); --------------------编程问答-------------------- window.dialogArguments可以获得 window.showModalDialog 方法的第二个参数,
可以把父窗体的引用传过去,这样 在子窗体中就可以 
window.dialogArguments.location.reload()

来实现父窗体刷新了 --------------------编程问答-------------------- 模式窗口刷新父窗口 
模式窗口中点击按钮让父窗口跳转到新的页面,不可用 opener.document.location 方式来设置,只能在父窗口把当前window对象传递到模式窗口,模式窗口使用 dialogArguments 来获得父窗口对象。

父窗口(需要把当前页面window对象传递到模式窗口页面)

<a href="javascript:Openersub('qy.htm');" >test</a>
<script>
function Openersub(strUrl)
{
 var vTmd=Math.random();
 var vReturn='';
 var strFeature = 'dialogWidth:530px;dialogHeight:470px;status:0;scroll:1:0;help:0;';
 if(strUrl.indexOf('?')>-1)
 {
  vReturn=window.showModalDialog(strUrl+'&tmd='+vTmd,window,strFeature);
 }
 else
 {
  vReturn=window.showModalDialog(strUrl+'?tmd='+vTmd,window,strFeature);
 } 

}
</script>
--------------------编程问答-------------------- 我记得在框架下不能用window.opene的
解决方法就是你心中要有一个概念就是虽然网页是无状态的但是asp.net控件是有状态的! --------------------编程问答-------------------- window.showModalDialog方式


function ShowDialog(url) 

    var iWidth=300; //窗口宽度
     var iHeight=200;//窗口高度
     var iTop=(window.screen.height-iHeight)/2;
    var iLeft=(window.screen.width-iWidth)/2;
    vReturn=window.showModalDialog(url,window,"dialogHeight: "+iHeight+"px;dialogWidth: "+iWidth+"px;dialogTop: "+iTop+";dialogLeft: "+iLeft+"; resizable: no; status: no;scroll:no");
}


注意这里的第二个参数,window

在showModalDialog打开的页面内用window.dialogArguments 可以获得 window
用window.returnValue 可以设置 父窗体的 vReturn 的值 也就是 showModalDialog 的返回值 --------------------编程问答-------------------- 父窗口改成 
onclick="javascript:window.showModalDialog('Open.aspx?ID=1',   this,   'dialogWidth=300px;dialogHeight=300px');location.reload();"   

模窗改成 
function   test() 

    window.close();


这样就能达到你要的效果 --------------------编程问答-------------------- 刷新要示情况而定

有几种情况:

第一种,你的父窗体的数据是初始化得到的,那你子窗体关闭刷新父窗体是全部重新获取新数据

楼上的  JlinShu  说的就是这种情况


还有别的方法, 


第二种,你的交窗体的数据是按查询按钮得到的,那你子窗体关闭刷新父窗体是得重新调用你父窗体的查询按钮获得新数据

function RefreshParentWindows()
    {           
         if (window.opener != null)
        { 
            window.opener.document.getElementById("btnSearch").click();
            window.close();
        } 
    }
    </script>

       
         --------------------编程问答-------------------- xuexi,明天去公司试试 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,