I récemment mis à jour cette configuration:AjaxControlToolkit TabContainer L'événement ActiveTabChanged a été déclenché deux fois lorsque UpdatePanel et ToolkitScriptManager ont été utilisés?
ASP.NET 2.0
AjaxControlToolkit, 1.0.20229.0
System.Web.Extensions, Version=2.0.0.0
Pour
ASP.NET 3.5
System.Web.Extensions, Version=3.5.0.0
AjaxControlToolkit , Version=3.5.40412.0
J'ai la structure suivante:
<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 ... />
Tous les a la même première structure. Le code de Serverside, je:
protected void TabContainerCarga_ActiveTabChanged(object sender, EventArgs e)
{
//handles TabPanels show/hide and fill up forms grids.
}
CustomControl a une grille qui a des post-dos pour effectuer des opérations comme l'ajout et la suppression des enregistrements. Lorsque CustomControl est chargé, il remplit deux composants <asp:DataGrid />
.
<asp:DataGrid />
charge une liste avec une zone de texte que l'utilisateur peut remplir et appuyer sur un bouton pour ajouter enregistrements.<asp:DataGrid />
Afficher les informations entrées. À des fins d'histoire.
Le comportement étrange connu est, il active deux fois ActiveTabChanged. Dans la première fois, il se comporte comme si je chargeais l'état CustomControl pour la première fois et que l'événement se produisait.
Je ne peux pas utiliser une solution que j'ai vu comme définir l'indicateur isFormLoaded ou même déclencher une fonction postBack javascript.
Je pense à placer un indicateur IsLoaded structuré dans un ViewState à l'intérieur du contrôle. Et redémarrez-le après un événement déclenché dans le contrôle personnalisé.
Qu'en pensez-vous et y at-il une solution?