[英]How to fire ActiveTabChanged event of ajax:Tabcontainer conditionally
[英]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ó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 />
組件。
<asp:DataGrid />
加載帶有一些文本框的列表,用戶可以填寫該文本框並按下按鈕添加記錄。 <asp:DataGrid />
顯示任何輸入的信息。 為歷史目的。 奇怪的已知行為是,它實際上激活了兩次ActiveTabChanged。 在第一次,它表現得像我第一次加載CustomControl狀態,他們去做事件。
我不能使用我見過的一些解決方案,比如設置isFormLoaded標志甚至可以激活一個javascript postBack函數。
我考慮將一個IsLoaded標志在ViewState中放置在控件中。 並在自定義控件內的任何觸發事件后重新啟動它。
您怎么看待這個問題並且有什么解決方案?
我無法解決這個問題,因為它來自這個組件的內部機制。 我不會經歷那個叢林。 所以我讓設計師為我繪制了很酷的標簽,並使用AJAX和Rest Services樣式編寫了自己的標簽控件。 而已! 我現在想要的行為我擁有它並且現在工作得非常好; 可控制並將較少的JavaScript代碼加載到客戶端計算機中。 停止使用那個狗屎!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.