zoukankan      html  css  js  c++  java
  • 页面刷新或者子窗体刷新父窗体,不提示 "重试或取消”对话框

    情景:如果页面有form表单,并且执行过post请求,< form method="post" ...>, 页面刷新或者子窗体刷新父窗体,会弹出一个 "重试或取消”的对话框。

    方案:

     一、 window.opener.location.reload() ;或者parent.location.reload();  如果改页面没提交过,这个方法好使.但是这个页面一旦提交过后,系统就会提示"重试或取消”的对话框.

    二、window.opener.location = window.opener.location;或者 parent.window.location.href = parent.window.location.href;  这个方法肯定不提示,但是有个问题就是分页显示的时候,一刷新总是会显示第一页,同时查询的条件也不能保存下来。

    三、针对方法二,我们可以在提交事件里面用 Response.Redirect(Request.Url.AbsolutePath+"?search="...);方式到跳转当前页面,在Page_Load方法中,均采用类似下列方式设置值,间接转为为get请求。此方法基本上可以解决问题。但是如果有些页面使用了,第三方插件,里面部分参数自己无法控制,就比较纠结了。当然此方案或许可以,但是需要花一些时间,去判断第三方插件使用post方法的参数列表,加到现在的参数列表中。另外最纠结的是get方法的参数的列表长度有限制。

                string searchRequest = Request.QueryString["search"];
                if (!string.IsNullOrWhiteSpace(searchRequest))
                {
                    txtSearch.Text = searchRequest.Trim();
                }
                string pageIndexRequest = Request.QueryString["pageIndex"];
                if (!string.IsNullOrWhiteSpace(pageIndexRequest))
                {
                    ....
                }

    
    

    四、 window.opener.form1.submit();或者parent.window.form1.submit();  这个方法也不提示了,这个方法就是自动提交页面,绕开那个烦人提示的界面,但是如果被刷新的页面用到了类似gridwiew之类数据绑定控件,里面的数据可能不会随着刷新而发生变化,原因就是gridwiew的数据绑定是在某个控件的事件中进行,而页面是通过submit()提交的,不会触发该控件的事件gridwiew中的数据也是通过读取viewstat中内容获得的,所以在刷新过程中数据不会发生变化.

    五、window.opener.__doPostBack(" Control","");或者parent.window.__doPostBack(" Control",""); 其中 Control 是控件ID,这个方法就是克服了三的缺点,不用.opener.form1.submit()这样直接提交.不仅让页面自动提交,而且还要想办法让控件的事件也执行.但是此方法也不是完美的,有的页面是没有这样的控件,有的页面有这个控件但也不能触发数据绑定事件.比如页面数据是随下框内容发生变化的那种页面.因为页面数据是否重新绑定取决于下拉框中内容是否发生变化.而打开子窗体前后时下拉框内容肯定没有变化,所以页面内容也不会变化.

    六、针对方法四、方法五、我们可以在父页面的Page_Load中绑定数据时不加IsPostBack判断,但是不好就不好在点按钮时同样的数据会绑定两遍。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 矩阵加法
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 乘法表
    监管只是压倒网盘业务的一根稻草,但不是主要原因(答案只有一个:成本!)
  • 原文地址:https://www.cnblogs.com/ful1021/p/4804349.html
Copyright © 2011-2022 走看看