showModalDialog 刷新本页面,不重新发送信息,则无法刷新网页,Page_PreRender

问题描述:

      showModalDialog 关闭模式窗体后,重新绑定gridview,如果用location.reload()方法来刷新页面。会弹出“不重新发送信息,则无法刷新网页”对话框。aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。原因是页面已经通过查询按钮或分页按钮提交过了,而且希望查看文章后保持原来的页面的一些状态,如当前页码等。loation.href=loation.href  gridview数据不发生变化,原因是loation.href还等于了原来的页面,如果把当前页面重写一遍,且加个随机数给loation.href,那么就会发生变化。

问题分析:

     .cs文件中对于控件数据的绑定都是在按钮的事件中完成的,这样的话我只用js的window.document.forms(0).submit()提交的话是不会重新绑定数据的。故我们可以把数据绑定的代码放在页面的事件中,由于数据的绑定需要按钮事件设置的一些初始值为参数。故不可以放在Page_load事件中(控件事件所处的生命周期在Page_load后),所以最后选择吧"数据绑定"方法放在了Page_PreRender事件中。

      具体代码:

 string url = "showModalDialog("xxx.aspx?idd=" + idd + "','','dialogWidth=800px;dialogHeight=600px;center:yes;status:no;help:no;scroll:yes');window.document.forms(0).submit();";

 protected void Page_PreRender(object sender, EventArgs e)
    {
        数据绑定方法;
    }

Page_Prerender介绍

      OnPreReader事件是在页面已经执行完所有后台代码,并且在生成标准HTML代码前,将要呈现给Page类的时候,此事件发生。

它是asp.net页面的OnPreRender事件的处理程序。此事件是定义在Control类中的,因为Page类(aspx页面的基类)继承的是System.Web.UI.WebControl类,而WebControl类继承的是所有控件的基类Control,此事件是定义在Control中的。

window.document.forms(0)说明:

     指当前html文档页中的第一个表单,也就是第一个 <form> </form>

原文地址:https://www.cnblogs.com/xbding/p/2741453.html