注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

脚步轻轻

怕惊扰酣睡的梦境

 
 
 

日志

 
 

关于弹出模态窗口后父窗口空白解决方案  

2010-05-25 10:57:55|  分类: 我的文档 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近写的一个页面老是在弹出模态窗口后,父窗口全变白了,什么东西都看不到,但是关闭子窗口后,父窗口的信息又正常了,找了很多解决方案和资料,都不知道是什么问题。因此,特地写出来让大家一起分享下我的解决方案。

当我对客户断事件的后台处理是如下的时候:
前台代码:
<asp:Button ID="Btn_CitizenAdd" Text="添加新人员" OnClick="Btn_CitizenAdd_Click" Visible='<%#Role("CitizenInfo", "add") %>'
                         Enabled="true" runat="server" CssClass="tbButton" />
以下是后台处理:
protected void Btn_CitizenAdd_Click(object sender, EventArgs e)
         {
             //string url = string.Format("../CitizenInfo/CitizenNewAdd.aspx?H_ID={0} ",HID);
             //Response.Write("<script>window.showModalDialog('../CitizenInfo/CitizenNewAdd.aspx?H_ID=' +"HID"+,   window,   'dialogHeight=500px;dialogWidth=800px;status=no;scroll=yes;help=no')</script>");  
             Response.Write("<script language=javascript>window.showModalDialog('../CitizenInfo/CitizenNewAdd.aspx?H_ID= " + HID + "',   window,   'dialogHeight=800px;dialogWidth=900px;status=no;scroll=yes;help=no');'return true;'</script>");
         }
就会出现子窗口弹出,但父窗口一片空白,原因是什么呢?

我试了一下自己的代码,发现问题在这,我用的是服务器端的Button,点击的时候,需要提交页面的,在同时也打开一个新的对话框,在对话框未成对话,父窗口是不能获得焦点的,也就是说,这个时候服务器端返回不了信息。所以父窗口是一片白,当完成对话框后,完成与服务器的交互,这时候就不会出现空白(只要把子窗口关闭)。
怎么解决这个问题呢?网上也有很多办法,我试了试,觉得还是用下面的办法最简单有效。代码应该怎么写呢?

代码如下:
protected void Btn_CitizenAdd_Click(object sender, EventArgs e)
         {
             //string url = string.Format("../CitizenInfo/CitizenNewAdd.aspx?H_ID={0} ",HID);
             //Response.Write("<script>window.showModalDialog('../CitizenInfo/CitizenNewAdd.aspx?H_ID=' +"HID"+,   window,   'dialogHeight=500px;dialogWidth=800px;status=no;scroll=yes;help=no')</script>");  
             //Response.Write("<script language=javascript>window.showModalDialog('../CitizenInfo/CitizenNewAdd.aspx?H_ID= " + HID + "',   window,   'dialogHeight=800px;dialogWidth=900px;status=no;scroll=yes;help=no');'return true;'</script>");

//.NET在后置代码中输入JS提示语句(背景不会变白) 
             Page.RegisterStartupScript(Page.GetType(), "<script language=javascript>window.showModalDialog('../CitizenInfo/CitizenNewAdd.aspx?H_ID= " + HID + "',   window,   'dialogHeight=800px;dialogWidth=900px;status=no;scroll=yes;help=no');</script>"); 

//有转向
  Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('恭喜您,修改成功!');window.location='Default.aspx'</script>");   

         }
通过比较这两块后台代码我们可以发现,同样是向客户端发生脚本,Page.RegisterStartupScript()可以在注册脚本的同时,把父窗口的焦点获取,不过Response.Write()确不能获取。

  评论这张
 
阅读(342)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017