2010-06-09 5 views
3

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&#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 ... /> 

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 />.

  1. <asp:DataGrid /> charge une liste avec une zone de texte que l'utilisateur peut remplir et appuyer sur un bouton pour ajouter enregistrements.
  2. <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?

Répondre

1

Je n'ai pas pu résoudre ce problème car il provient de la mécanique interne de ce composant. Je ne voudrais pas traverser cette jungle. J'ai donc demandé à un designer de dessiner des onglets sympas pour moi et j'ai écrit mon propre onglet en utilisant le style AJAX et Rest Services. C'est tout! Le comportement que je voulais maintenant je l'ai et fonctionne plutôt bien maintenant; contrôlable et charge moins de code JavaScript dans l'ordinateur client. Arrête d'utiliser cette merde!