2012-01-04 2 views
1

複数のUpdatePanelsがページにあるときに、JavaScript経由でUpdatePanelを更新しようとすると、動作がオフになります。__doPostBack上のすべてのUpdatePanels

は短いそれを維持しようとします:私はすでに条件付き

  • 私はコードビハインドで__EventTarget
  • へのUpdatePanelの正しいクライアントIDを渡していますには、UpdateModeを設定してい

    • ターゲットコントロールを見つけることができました

    しかし何らかの理由で、ページ上のすべてのUpdatePanelのOnLoadが実行されます。

    以下はコードのスニペットです - なぜこれが起こっているのか?

    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> 
    

    分離コード:(私はASYNCポストバックをトリガーしています)

    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:

    var updatePanelWrappers = $(".updatePanelWrapper"); 
    var availableWrapper = updatePanelWrappers[0]; 
    var updatePanelElement = $(availableWrapper).children()[0]; 
    var updatePanelId = $(updatePanelElement).attr("id"); 
    
    window.__doPostBack(updatePanelId, "Some Arguments..."); 
    
  • 答えて

    0

    UpdatePanelのコールバックを持つページがまだ通過しますそのライフサイクルのほとんどは、これにはすべてのLoadイベントが含まれます。

    関連する問題