如何让弹出的模态窗口关闭后父窗口的代码才继续运行?

时间:2020-12-17 23:40:53
父窗口页面father.aspx里面有一个按钮的click事件函数是这样的:
parentButtonClick(){  
    //some codes
     .....
    Response.Write("<script language='javascript'>window.showModalDialog('child.aspx','window','help=0;status=0;dialogWidth=870px;dialogHeight=450px;')</script>");
     //codes here to judge globe var-------line n
       ......
      return;
}
子窗口的关闭按钮里面我写了
childCloseButtonClick(){
   //set some globe var
   .......
   Response.Write("<script language:javascript>window.close()</script>");
}

现在的问题是调试过程中发现当父窗口执行完Response.Write后,程序控制权并没有交给子窗口页面,所以子窗口并没有立刻跳出。父窗口的代码继续从line n继续执行,当该函数返回的时候,子窗口才跳出,也就是说我无法从子窗口的关闭按钮函数得到新被设置的值。哪位仁兄能告诉我如何解决啊?如何让父窗口的代码在子窗口的操作完成后才继续运行阿?
     


17 个解决方案

#1


你应该分开写。。。关闭窗口再激发父窗口的后续响应

#2


还有其他办法么

#3


父窗口的代码还能继续运行的话,那就不就模态对话框了

#4


可它确实是继续运行的阿。。。急

#5


确实应该分2步进行
模态窗口关闭的时候给主窗口传递一个参数
然后主窗口根据传递的参数重新处理剩余的代码

#6


while()
{

}

#7


前面的发错了不好意思啊>......

while( !form.IsDispost )
{
    //这里什么也不写就是一个空等待
}

#8


你对window.showModalDialog还是不了解!
父窗体:
//strReturn是从子窗体返回到值
strReturn = window.showModalDialog('child.aspx','window','help=0;status=0;dialogWidth=870px;dialogHeight=450px;'

子窗体:
window.returnValue = XXX;

#9


iflang :

while(!IsPostBack)
{
}
么?不好使啊。。。

 fallingstarNo1 :
我是asp.net 啊,里面哪有window.showModalDialog这个东西啊?

#10


不顶沉的快。。。

#11


救命啊。。。。。。。。。

#12


showModalDialog(str,"",strFeatures); //弹出窗口
doPostBack('btnRefresh', '');//当关闭弹出窗口后执行 btnRefresh(服务器控件) 的单击事件

#13


父前台页面:
<script language=javascript>
parentButtonClick()
{
  strReturn = window.showModalDialog('child.aspx','window','help=0;status=0;dialogWidth=870px;dialogHeight=450px;'
 if(strReturn == "True")
 {
   return true;
 }
 return false;

}
</script>
父后台:
button1.Attributes.Add("onclick", "return SendToClient('','')");

子页面后台:
Response.Write("<script language=javascript>window.returnValue = XXX;
</script>");

#14


fallingstarNo1 谢谢你,你的方法应该可行,但是由于我的parentButtonClick()
里面还作了很多事情,在showModalDialog前有很多,之后也有很多,所以不可能让这些代码都在javascript里面实现。无论怎样,都很感谢你

#15


谢谢上面回答问题的朋友,谢谢。不过还没有好的解决方法出现。

#16


str=showModalDialog(str,"",strFeatures); //弹出窗口,至于具体用法,我以前回答过类似的帖子你自己搜索下!!!!!
__doPostBack('btnRefresh', '');//这个别人写错了
--这个方法可行,那我讲个具体思路
上面的代码都是js代码 
根据你说 的你可以这样来做,弹出窗口后需要执行的后台代码放在另外一个按钮的后台事件里面!通过前台对关闭弹出窗口返回给前台str变量的值来决定是否执行document.all.Button2.click();!!

#17


学习中~~

#1


你应该分开写。。。关闭窗口再激发父窗口的后续响应

#2


还有其他办法么

#3


父窗口的代码还能继续运行的话,那就不就模态对话框了

#4


可它确实是继续运行的阿。。。急

#5


确实应该分2步进行
模态窗口关闭的时候给主窗口传递一个参数
然后主窗口根据传递的参数重新处理剩余的代码

#6


while()
{

}

#7


前面的发错了不好意思啊>......

while( !form.IsDispost )
{
    //这里什么也不写就是一个空等待
}

#8


你对window.showModalDialog还是不了解!
父窗体:
//strReturn是从子窗体返回到值
strReturn = window.showModalDialog('child.aspx','window','help=0;status=0;dialogWidth=870px;dialogHeight=450px;'

子窗体:
window.returnValue = XXX;

#9


iflang :

while(!IsPostBack)
{
}
么?不好使啊。。。

 fallingstarNo1 :
我是asp.net 啊,里面哪有window.showModalDialog这个东西啊?

#10


不顶沉的快。。。

#11


救命啊。。。。。。。。。

#12


showModalDialog(str,"",strFeatures); //弹出窗口
doPostBack('btnRefresh', '');//当关闭弹出窗口后执行 btnRefresh(服务器控件) 的单击事件

#13


父前台页面:
<script language=javascript>
parentButtonClick()
{
  strReturn = window.showModalDialog('child.aspx','window','help=0;status=0;dialogWidth=870px;dialogHeight=450px;'
 if(strReturn == "True")
 {
   return true;
 }
 return false;

}
</script>
父后台:
button1.Attributes.Add("onclick", "return SendToClient('','')");

子页面后台:
Response.Write("<script language=javascript>window.returnValue = XXX;
</script>");

#14


fallingstarNo1 谢谢你,你的方法应该可行,但是由于我的parentButtonClick()
里面还作了很多事情,在showModalDialog前有很多,之后也有很多,所以不可能让这些代码都在javascript里面实现。无论怎样,都很感谢你

#15


谢谢上面回答问题的朋友,谢谢。不过还没有好的解决方法出现。

#16


str=showModalDialog(str,"",strFeatures); //弹出窗口,至于具体用法,我以前回答过类似的帖子你自己搜索下!!!!!
__doPostBack('btnRefresh', '');//这个别人写错了
--这个方法可行,那我讲个具体思路
上面的代码都是js代码 
根据你说 的你可以这样来做,弹出窗口后需要执行的后台代码放在另外一个按钮的后台事件里面!通过前台对关闭弹出窗口返回给前台str变量的值来决定是否执行document.all.Button2.click();!!

#17


学习中~~