如何在模式窗口关闭时刷新父窗口

80酷酷网    80kuku.com

  父窗口|刷新在项目经常会遇到这么一种情况,要在弹出的窗口里面修改父页面中的数据。本文以模式窗口为例,说明如何在更新模式窗口页面之后刷新父窗口的内容。

在一般的情况下,模式窗口的关闭并不会刷新父窗口,我们需要在打开模式窗口的javascript中添加额外的脚本来刷新他的父窗口。
实现如下:

string url = "ICManageAdd.aspx?ICID="+ICID+"&temp="+rd.Next().ToString()+"&UserName="+Session["UserName"].ToString();
 e.Item.Cells[
4].Attributes.Add("style","cursor:hand;");
 e.Item.Cells[
4].Attributes.Add("onclick","window.showModalDialog('"+url+"', '', 'dialogWidth=700px;dialogHeight=600px; status:no; help:no;');window.location.reload();)

这个语句是在Datagrid的一个列中加入弹出模式窗口的功能,在弹出的窗口中 对Datagrid某行的详细数据进行修改。由于模式窗口的弹出会使父窗口页面的执行中断,我们可以在弹出模式窗口后加入对自己页面的刷新:window.location.reload()。执行的效果是在关闭模态窗口后,整个父页面进行刷新。

但是这个功能并不能很好地满足需求,比如父页面Datagrid的数据是经过点击页面中查询按钮而得到的,那么刷新整个父页面边不合适了,造成很差的用户体验。为了在这种情况下刷新,我们可以用javascript模拟点击页面的查询按钮,这样既更新了内容,又保持了datagrid中的记录。
实现如下:
将window.location.reload()替换为document.Form1.btnSearch.onclick(); 其中btnSearch是父页面搜索按钮的id

最后还得使模态窗口不要缓存内容,在cs中加入

Response.Expires = 0;

这样就解决了模式窗口的刷新问题



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: