ASP.NET:使用jQuery手动更新UpdatePanel

我在使用javascript(jQuery)更新ASP:UpdatePanel时遇到了麻烦。 这就是我的意思。

我正在使用隐藏的按钮技巧,因为我似乎无法获得__doPostBack技巧的更新面板的ClientID。

       Laddar...   
<asp:Button runat="server" ID="btnUpdate" CommandName="Refresh" CommandArgument=''/>
... <a href="javascript:jQuery('#').trigger('click')&&undefined;">Fire!

在处理btnUpdate的代码隐藏中(在GridView RowCommand中),当按下btnUpdate时,rptrEnquiry会反弹。

如果我直接按下按钮(而不是隐藏),一切都很完美(显示更新程序并更新日期并更新转发器。

但是,如果我单击fire link并通过javascript触发按钮,则仅更新日期,但不显示updateprogress,并且转发器不会反弹。 在调试时我可以看到反弹代码被执行但它的效果不在更新中。

好的,所以我通过完全重建整个事情来解决我的问题。 可以帮助其他人的一些经验教训:

我在gridview中有更新面板,当我将updatepanel部分分成一个控件时,我自己的大部分问题都解决了,例如无法引用pnlUpdate。

http://encosia.com/2007/10/24/are-you-making-these-3-common-aspnet-ajax-mistakes/非常有帮助。

更新面板中的更新由其PreRender控制。 通过使用__EVENTTARGET,我们感兴趣的面板就会更新。

 protected void pnlUpdate_PreRender(object sender, EventArgs args) { if (Request["__EVENTTARGET"] == pnlUpdate.ClientID) { PreBind(); switch(Request["__EVENTARGUMENT"]) { case "toggle": Toggle(); break; case "purchase": Purchase(); break; case "update": /* nop */ break; } Bind(); } } 

要使__EVENTTARGET具有正确的clientId(如果使用按钮,则为空字符串)我需要使用javascript触发面板更新:

    

你尝试过这样的事吗? (摘自使用JavaScript轻松刷新UpdatePanel )。

有一种简单的方法可以触发针对UpdatePanel的回发:__ doPostBack()。

只要__doPostBack()调用的事件目标是UpdatePanel的异步触发器,ASP.NET AJAX框架就会拦截回发并触发部分回发。