Js控制ASPX页面刷新的土办法

我们知道在 aspx 页面里激发一个事件都需要把页面 Post 到服务器,这样如果在客户端通过调用 javascript 进行页面刷新, IE 就会弹出提示框问是否重新提交,但是我们本意只是想刷新数据显示。怎么办呢,我想的办法就是模拟控件激发事件的动作,让 .net 误认为是改变了控件的状态或点击了刷新按钮,让页面 Post 达到刷新数据的作用。

       首先拖入一个服务器控件到aspx页面,设置此控件的ID,这里为了改变状态方便拖入的是checkbox,然后在此控件的代码里加上【style="DISPLAY: none"】这个属性意在隐藏此控件,但不能用【Visible=false】这样控件就不会加载到客户端了。控件的代码如此形式:【<asp:checkbox id="chkReload" style="DISPLAY:none" runat="server" AutoPostBack="True"></asp:checkbox>

       添加客户端js代码:CS页面加入处理此控件的事件代码:这样只要客户端调用js的reload()方法就可以刷新页面了,跟我们点击刷新按钮的效果一致。没有深入研究不知道有没有更好的办法。

< script language = " javascript " >
function  reload()
document.Form1.chkReload.checked 
= !document.Form1.chkReload.checked;
 __doPostBack('chkReload',''); 
}

</ script >

 

private   void  chkReload_CheckedChanged( object  sender, System.EventArgs e)
{
            Bind();
}

 

 

确实不是所有aspx文件解析到客户端后都会添加__doPostBack()函数,如果页面上没有需要实现autopostback的控件,就不会添加__doPostBack()函数。

俺补充一下:如果在主页面中有一个DataGrid用来显示表格状数据,并且实现了自定义分页;每一行有一个“编辑”按钮用来弹出一个模态窗口让用户编辑该行数据,如果在编辑完成后,主窗口调用window.location.reload()或者类似的刷新操作,则主窗口的onload事件会被调用,这时问题出现了:DataGrid的页码会被回复到第一页,即以前的ViewState不会被保存下来。这时使用楼主说的办法来代替window.location.reload()就可以达到DataGrid的页码仍然保留在原来页数的效果了。。。。。。。   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值