簡體   English   中英

使用UpdatePanel和ToolkitScriptManager時,AjaxControlToolkit TabContainer ActiveTabChanged事件被觸發兩次?

[英]AjaxControlToolkit TabContainer ActiveTabChanged event fired twice when UpdatePanel and ToolkitScriptManager is used?

我最近升級了這個配置:

ASP.NET 2.0
AjaxControlToolkit, 1.0.20229.0
System.Web.Extensions, Version=2.0.0.0

ASP.NET 3.5
System.Web.Extensions, Version=3.5.0.0
AjaxControlToolkit , Version=3.5.40412.0

我有以下結構:

<asp:ToolkitScriptManager ID="PageScriptManager" runat="server">  
</asp:ToolkitScriptManager>  
    <asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Always">
        <ContentTemplate>
         <ajaxToolkit:TabContainer 
              OnActiveTabChanged="TabContainerCarga_ActiveTabChanged"
              AutoPostBack="True">
                        <ajaxToolkit:TabPanel 
                            ID="tabRelatorios"
                            runat="server"
                            HeaderText="Relat&#243;rios">
                                <ContentTemplate>
                                    <CustomUserControl:relatorios id="CustomControl" Visible="False" runat="server" />                                                      
                                </ContentTemplate>
                                      <Triggers>
                                        <asp:PostBackTrigger ControlID="CustomControl" />
                                      </Triggers>
                            </ajaxToolkit:TabPanel>
                  <ajaxToolkit:TabPanel ... />
                  <ajaxToolkit:TabPanel ... />
                  <ajaxToolkit:TabPanel ... />
                  <ajaxToolkit:TabPanel ... />

所有具有相同的第一結構。 在服務器端代碼,我有:

protected void TabContainerCarga_ActiveTabChanged(object sender, EventArgs e)
{
   //handles TabPanels show/hide and fill up forms grids.
}

CustomControl有一個網格,它有一些回發來執行添加和刪除記錄等操作。 當CustomControl加載時,它會填充兩個<asp:DataGrid />組件。

  1. <asp:DataGrid />加載帶有一些文本框的列表,用戶可以填寫該文本框並按下按鈕添加記錄。
  2. <asp:DataGrid />顯示任何輸入的信息。 為歷史目的。

奇怪的已知行為是,它實際上激活了兩次ActiveTabChanged。 在第一次,它表現得像我第一次加載CustomControl狀態,他們去做事件。

我不能使用我見過的一些解決方案,比如設置isFormLoaded標志甚至可以激活一個javascript postBack函數。

我考慮將一個IsLoaded標志在ViewState中放置在控件中。 並在自定義控件內的任何觸發事件后重新啟動它。

您怎么看待這個問題並且有什么解決方案?

我無法解決這個問題,因為它來自這個組件的內部機制。 我不會經歷那個叢林。 所以我讓設計師為我繪制了很酷的標簽,並使用AJAX和Rest Services樣式編寫了自己的標簽控件。 而已! 我現在想要的行為我擁有它並且現在工作得非常好; 可控制並將較少的JavaScript代碼加載到客戶端計算機中。 停止使用那個狗屎!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM