页面上的所有UpdatePanels在__doPostBack上更新 [英] All UpdatePanels on page updating on __doPostBack

查看:63
本文介绍了页面上的所有UpdatePanels在__doPostBack上更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,


当页面上有多个UpdatePanel时,尝试通过JavaScript更新UpdatePanel时出现行为异常.


会尽量简短:


-我已经将UpdateMode设置为条件
-我将UpdatePanel的正确ClientID传递给__EventTarget
-在后台代码中,我可以成功找到目标控件


但是由于某种原因,页面上每个UpdatePanel的OnLoad都会被触发.

以下是一段代码-知道为什么会发生这种情况吗?



Ascx:

Hello,


I am experiencing off behaviour when trying to update an UpdatePanel via JavaScript when multiple UpdatePanels are on the page.


Will try to keep it short:


- I''m already setting the UpdateMode to Conditional
- I am passing in the correct ClientID of the UpdatePanel into the __EventTarget
- In the code-behind, I am successfully able to find the target control


But for some reason, the OnLoad of every UpdatePanel on the page is fired.

Below is a snippet of code - any idea why this is happening?



Ascx:

<div class="updatePanelWrapper">
   <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" RenderMode="Inline" OnLoad="UpdatePanel1Load"
       runat="server">
       <ContentTemplate>
           <asp:Panel ID="Panel1" runat="server">
           </asp:Panel>
       </ContentTemplate>
   </asp:UpdatePanel>
   </div>
   <div class="updatePanelWrapper">
   <asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" RenderMode="Inline" OnLoad="UpdatePanel2Load"
       runat="server">
       <ContentTemplate>
           <div>
               <asp:Panel ID="Panel2" runat="server">
               </asp:Panel>
           </div>
       </ContentTemplate>
   </asp:UpdatePanel>
   </div>



CodeBehind:



CodeBehind:

protected void UpdatePanel1Load(object sender, EventArgs e)
   {
       UpdatePanelLoad(sender, e);
   }

   protected void UpdatePanel2Load(object sender, EventArgs e)
   {
       UpdatePanelLoad(sender, e);
   }

   protected void UpdatePanelLoad(object sender, EventArgs e)
   {
       // if only a async postback then load the control
       if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
       {
           // Some Logic ...
       }
   }



JavaScript(我在其中触发ASYNC回发):



JavaScript (where I''m triggering the ASYNC PostBack):

var updatePanelWrappers = $(".updatePanelWrapper");
var availableWrapper = updatePanelWrappers[0];
var updatePanelElement = $(availableWrapper).children()[0];
var updatePanelId = $(updatePanelElement).attr("id");

window.__doPostBack(updatePanelId, "Some Arguments ");

推荐答案

(" ); var availableWrapper = updatePanelWrappers [ 0 ]; var updatePanelElement =
(".updatePanelWrapper"); var availableWrapper = updatePanelWrappers[0]; var updatePanelElement =


(availableWrapper).children()[ 0 ]; var updatePanelId =
(availableWrapper).children()[0]; var updatePanelId =


(updatePanelElement).attr(" id"); 窗口.__doPostBack(updatePanelId," );
(updatePanelElement).attr("id"); window.__doPostBack(updatePanelId, "Some Arguments ");


这篇关于页面上的所有UpdatePanels在__doPostBack上更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆