如果刷新一个已经提交过的页面时,系统总是会提示一个 "重试或取消”的对话框.,如果是一个普通的页面,好象也无所谓,有就有,大不了多点一下.但是当我们是在子窗体中刷新父窗体时,就显得有点多余了.所以就想把这个对话框给去了.找了很的办法.总结一下.
一, window.opener.location.reload() 如果改页面没提交过,这个方法好使.但是这个页面一旦提交过后,系统就会提示"重试或取消”的对话框.
二 window.opener.location = window.opener.location;这个方法肯定不提示,但是有个问题就是分页显示的时候,一刷新总是会显示第一页,这个也是理所当然,因为默认请求的就是第一页
三window.opener.form1.submit();这个方法也不提示了,这个方法就是自动提交页面,绕开那个烦人提示的界面,但是如果被刷新的页面用到了比如gridwiew控件之类的,里面的数据可能不会随着刷新而发生变化,原因就是gridwiew的数据绑定是在某个控件的事件中进行,而页面是通过submit()提交的,不会触发该控件的事件.gridwiew中的数据也是通过读取viewstat中内容获得的,所以在刷新过程中数据不会发生变化.
四 window.opener.__doPostBack("Control","");其中 Control是控件ID,这个方法就是克服了三的缺点,不用.opener.form1.submit()这样直接提交.不仅让页面自动提交,而且还要想办法让控件的事件也执行.
注意第四种方法也不是完美的,有的页面是没有这样的控件,有的页面有这个控件但也不能触发数据绑定事件.比如页面数据是随下框内容发生变化的那种页面.因为页面数据是否重新绑定取决于下拉框中内容是否发生变化.而打开子窗体前后时下拉框内容肯定没有变化,所以页面内容也不会变化.
五,针对四,我们可以在父页面用点小技巧,比如在Page_Load中绑定数据时不加IsPostBack判断,但是不好就不好在点按钮时同样的数据会绑定两遍.
用window.opener.location.reload();父窗口,总是弹出“不重新发送信息,则无法刷新网页,请单击重试再次发送信息,或单击以消返回正查看的页”
如何避免出现对话框?
父窗口是使用:
<script type="text/javascript">
<!--
function ss(){
form1.submit();
}
window.setInterval(ss,10000);
//-->
</script>
定时刷新的。
一、window.opener.location.reload(); 不用
改成 window.opener.location.href=window.opener.location.href;
二、<SCRIPT LANGUAGE=javascript>
<!--
function ss(){
form1.method="get";//加上这一句就可以了
form1.submit();
}
window.setInterval(ss,10000);
//-->
</SCRIPT>
如果页面的请求是通过post方式得到,reload时会有刷新提示
如果页面的请求是通过get方式得到,reload时不会有刷新提示.
三、简单的无闪烁刷新方法:
<script type="text/javascript">
<!--
function ss(){
form1.submit();
}
window.setInterval(ss,10000);
//-->
</script >
<form name="form1" action="lookNextWeekPj.jsp method="post">
</form>