Jquery+;ASP.NET更新面板

Jquery+;ASP.NET更新面板,jquery,asp.net,updatepanel,Jquery,Asp.net,Updatepanel,我一直忙于在我们的定制CRM中实现JQuery。在这个过程中,我创建了一个带边框的面板,它的标题中有一个简单的按钮,可以根据当前状态折叠或扩展内容。现在,为了记住面板的状态,我正在使用jquery cookie库,它在提交页面时为该控件设置一个cookie,然后在重新加载页面时读取面板并将其重置为上次状态 问题一是让JQuery在提交页面时执行,因为ASP.NET接管了这个任务,并且不会调用表单上的submit()函数。为了克服这一点,我发现它几乎完美无瑕 然而。。。在进一步的测试之后,我发现这

我一直忙于在我们的定制CRM中实现JQuery。在这个过程中,我创建了一个带边框的面板,它的标题中有一个简单的按钮,可以根据当前状态折叠或扩展内容。现在,为了记住面板的状态,我正在使用jquery cookie库,它在提交页面时为该控件设置一个cookie,然后在重新加载页面时读取面板并将其重置为上次状态

问题一是让JQuery在提交页面时执行,因为ASP.NET接管了这个任务,并且不会调用表单上的submit()函数。为了克服这一点,我发现它几乎完美无瑕

然而。。。在进一步的测试之后,我发现这将阻止在UpdatePanel中发生的任何回发,以执行完整的回发,而不是来自面板的异步回发。我意识到UpdatePanel现在有点过时了,但是它们在我们的网站上随处可见,所以为了使用这个控件,它必须与它们很好地配合

那么,有没有办法确定是否发生了异步回发??基本上,我希望能够做到以下几点:

if (IsAsyncPostback) {
    theForm.submit(); //this seems to still fire the async postback, but doesn't call the jquery which is setup to save the state..
} else {
    $(theForm).submit(); //this is from the link, which cause all postbacks to be full on postbacks, even if they are in an updatepanel
}

救命啊,我到处找了,没找到有用的东西。。当然,我不是唯一尝试过此功能的人?

您看到了吗:?

我会避免干扰
\u doPostBack()
函数

我认为您需要处理PageRequestManager的
beginRequest
endRequest
事件。这将在每次UpdatePanel刷新后运行您的代码,例如:

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function() {
  if ($('#panelID').is(':hidden'))
    $.cookie('#panelID', 'true');
  else
    $.cookie('#panelID', 'false');
});

如果您确实想更改
\uuu doPostBack()
,最好使用这种方法:

var oldDoPostBack = window.__doPostBack;

window.__doPostBack = function(target, arg) {
  // Trigger a custom event, to track when this occurs.
  $(window).trigger('doPostBack');

  // Call the real __doPostBack() function;
  oldDoPostBack(target, arg);
}
然后,当从任何源触发
\uu doPostBack()
时,您可以绑定到该自定义事件以采取操作:

$(window).bind('doPostBack', function() {
  alert('__doPostBack is about to execute.');
});
这里的一个重要优点是,您不需要重新定义
\uu doPostBack()
,因此您破坏它的可能性较小


不过,我还是建议您坚持使用内置的PageRequestManager事件,除非您确实因为其他原因需要捕获
\uuu doPostBack()
事件。

您的问题是,每次UpdatePanel有东西发布时都需要运行jQuery代码,或者您只是想确定它是否是一个AsyncPostback?问题是,当假定发生AsyncPostback时,它不会发生。它进行正常的回发。每当发生正常回发时,我需要能够保存面板的状态,这就是我使用此方法的原因。对于Asyncpostback,我可能不会保存状态,因为用户无论如何都不会离开页面。您是否尝试基本上使用该函数?是的,我正在使用切换函数,并使用此代码在cookie中保存切换状态$提交(函数(){if($('panelID').is(“:hidden”){$.cookie('panelID','True');}否则{;$.cookie('panelID','False');}返回True;});您知道
beginRequest
endRequest