取消异步回发

通过使用页上的NET UpdatePanel Web 服务器控件,可以在 ASP.NET 中实现异步回发。 UpdatePanel 控件不再需要在每次回发时刷新整个页面,这样将改善用户体验。在浏览器中, Microsoft AJAX Library 中的Sys.WebForms.PageRequestManager 类在客户端页生命周期中管 理事件以进行异步回发。可以通过处理 PageRequestManager 类公开的事件来自定义异步回发 出现的方式。

先决条件

若要在您自己的开发环境中实现这些过程,您需要:

Microsoft Visual Studio 2005 或 Microsoft Visual Web Developer 速成版。

一个支持 AJAX 的ASP.NET 网站。

创建取消回发的脚本

首先,创建用于管理浏览器中的异步回发的ECMAScript (JavaScript) 代码。

创建 JavaScript 代码以取消回发

在 ASP.NET 网站中,添加新的JScript 文件并将其命名为 CancelPostback.js。

向文件中添加以下脚本:

var divElem = 'AlertDiv';
var messageElem = 'AlertMessage';

Sys.Application.add_load(ApplicationLoadHandler)
function ApplicationLoadHandler(sender, args)
{
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest (CheckStatus);
}
function CheckStatus(sender, args)
{
  var prm = Sys.WebForms.PageRequestManager.getInstance();
  if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id ==  'CancelRefresh') {
    prm.abortPostBack();
  }
  else if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id  == 'RefreshButton') {
    args.set_cancel(true);
    ActivateAlertDiv('visible', 'Still working on previous  request.');
  }
  else if (!prm.get_isInAsyncPostBack() & args.get_postBackElement().id  == 'RefreshButton') {
    ActivateAlertDiv('visible', 'Retrieving headlines.');
  }
}
function ActivateAlertDiv(visString, msg)
{
    var adiv = $get(divElem);
    var aspan = $get(messageElem);
    adiv.style.visibility = visString;
    aspan.innerHTML = msg;
}
if(typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded ();

时间: 2024-10-31 11:11:39

取消异步回发的相关文章

为特定异步回发赋予优先级

默认情况下,当某个页同时生成多个异步回发时,最近生成的回发将优先.某些情况下,可以为特定的异步回发赋予优先级并取消其他回发. 先决条件 若要在您自己的开发环境中实现这些过程,您需要: Microsoft Visual Studio 2005 或 Microsoft Visual Web Developer 速成版. 一个支持 AJAX 的 ASP.NET 网站. 创建用于为特定回发元素赋予优先级的脚本 首先,创建用于管理浏览器中的异步回发的 ECMAScript (JavaScript) 代码.

updatepanel-asp.net4 imagebuttn 异步回发问题

问题描述 asp.net4 imagebuttn 异步回发问题 iis 服务器安装asp.net4 ,imagebutton 在updatepanel下做异步回发,点击imagebutton按钮不回发,button就没有这个问题,请问如何解决呢? 解决方案 不回发的话,强制回发试试: ScriptManager1.RegisterPostBackControl(imgbtn_up); 如果是客户端弹出提示的话,代码如下所示: ScriptManager.RegisterStartupScript

ASP.NET服务器控件封装-【事件】-1.1【事件回发.异步回调】

最近,正在学习ASP.NET服务器控件封装相关的知识,把自己学到的和大家分 享下. 本次内容的概要如下: 1.事件以及为什么需要事件驱动机制: 2.回发的原理: 3.异步回调的原理: 4.事件回发的实现: 5.异步回调的实现. 了解了本次内容的概要,接下来就分节次说明了. 1.事件以及为什么需要事件驱动机制 在C#语言详解一书中对事件的定义是"事件是一种使对象或类能够提供通知的 成员",在这里换句话 说就是页面中已注册事件的对象能够对用户的操作进行捕获并处理.那么为什么 需要引用事件机

GridView动态创建列回发再绑定的解决

先贴代码: protected void Page_Load(object sender, EventArgs e) { this.gvCon.MyBind+=new MyGridView.MyBind_Delegate(Bind); //这一句不用管 !,MyGridView 的需要! if (Page.IsPostBack == false) { Bind(); } } 在 Bind 函数的动态绑定 编辑列. 当点 编辑时, 可以改变为 编辑样式, 但是, 当点击 Update 或 Canc

ASP.NET服务器控件封装-【事件】-1.2【数据回发】

上节概述: 上节中主要总结了事件处理的机制.控件事件回发.服务端回发事件的捕获及 处理和异步回调等几个方面. 接下来本文将为大家描述"数据回发"的相关细节. 1.IPostBackDataHandler接口 我们封装的控件如果要实现数据回发功能的话,就必须继承 IPostBackDataHandler接口并实现接口方法.该接口方法只有两个: 代码 1 #region IPostBackDataHandler 成员 2 public bool LoadPostData(string po

请教怎么防止支付后网银或者支付宝多次回发

问题描述 最近在做支付,但是遇到了一个问题,不管是支付宝还是其他网银支付,付款成功后,他们都会发多次结果,支付宝和银联或招行支付,都要连续发5次支付结果来,然后我后台就处理五次支付结果,这样照成了我多次确认付款,我也做了验证,就是每次收到结果的时候先去判断这条记录是否被处理,如果没有处理,就先写入数据库,然后在做处理,但是每次支付结果回调都间隔时间都很短,照成我数据都还没有写完,已经处理了5次数据了,请问各位是怎么处理支付回调的? 解决方案 解决方案二:应该先判断订单号,重复的将会过滤,这样就可

asp.net Page.EnableEventValidation 属性验证服务器控件的回发和回调事件出现的错误

本以为页面很简单不会出现问题,但运行时出现了如下错误: Page.EnableEventValidation 属性 参看了一下MSDN,获取或设置一个值,该值指示页面验证回发事件,还是验证回调事件..NET Framework出于安全考虑需要为服务器端控件的回发和回调事件进行注册,此事件验证机制可消除未经授权的回发请求和回调带来的风险.通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件.默认情况下,ASP.NET 中的所有事件驱动控件均使用此功能. 第一反应,既然启用了事件

数据回发时,维护ASP.NET Tree控件位置

asp.net|控件|数据 ASP.NET2.0提供了一个功能强大的TreeView控件,但是它看起来有一个缺陷:它好像不能够跟踪用户最后选择的一个节点.如果你滚动到第50个节点然后展开该节点,那么当单击链接页面进行回发后,你必须重新利用滚动条下拉到你想要的节点位置. 在.NET较早的版本里,您可能考虑使用SmartNavigation这个特性.SmartNavigation是Web页面指令的一个属性,它的取值为布尔值,一个设置为true的页面指令看起来类似如下: <%@ Page Langua

ASP.NET框架数据回发与事件回发

源从何起 经常在网上的论坛看到有人问Page类的方法RegisterRequiresPostBack有什么用,它是做什么的呢? 简短的官方解释 MSDN对它的解释是将控件注册为要求在页面回发至服务器时进行回发处理的控件,说真的我知道这段话 想描述些什么,但是你知道怎么用它,在哪里用吗? 寻找回发真相 首先ASP.NET框架规定,凡是要进行数据回发的控件都要实现IPostBackDataHandler 接口,它有两个方 法LoadPostData.RaisePostDataChangedEvent