父窗口|刷新在项目经常会遇到这么一种情况,要在弹出的窗口里面修改父页面中的数据。本文以模式窗口为例,说明如何在更新模式窗口页面之后刷新父窗口的内容。
在一般的情况下,模式窗口的关闭并不会刷新父窗口,我们需要在打开模式窗口的javascript中添加额外的脚本来刷新他的父窗口。
实现如下:
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;这样就解决了模式窗口的刷新问题