2011-03-07 8 views
0

Je dois montrer une fonctionnalité similaire à l'accordéon qui est de jquery donc j'ai fait une fonction personnalisée de jquery pour produire l'effet.Accordéon ne fonctionne pas correctement

Il y a une vue de la grille dans laquelle il y a deux div, voici le code.

<asp:GridView ID="grdAccordion" runat="server" AutoGenerateColumns="false" Width="200px"> 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <div class="myFirstDiv" onclick="testToggle(this)"> 
         <%#Eval("Name")%> 
          <div class="mySecondDiv" style="display:none"> 
          <%#Eval("Person_Name")%> 
          </div> 
         </div> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

La seconde div possède une propriété de style none. par défaut tous les div sont fermés.

que j'ai fait une fonction js qui utilise la fonction toggle pour exécuter le code d'action.

function testToggle(testDiv) { 
     debugger 
      var sntHdnValue = $('#hdnSetFlag').val(); 
      if (sntHdnValue == 1) { 
       $(testDiv).find('div:first').show().attr('isOpen', 'true'); 
      } 
      else { 
      $(testDiv) 
      .parents('table:first') 
      .find('div[isOpen=true]').removeAttr('isOpen').toggle('slow'); 
      $(testDiv).find('div:first').show().attr('isOpen', 'true'); 
      } 
      sntHdnValue++; 
      $('#hdnSetFlag').val(sntHdnValue); 
     } 

ici, je l'ai fait usage du champ caché qui me laisse savoir qu'il est l'état initial tout est fermé je suis d'ajouter un IsOpen attr personnalisé pour mon identification

1) la situation actuelle Est-ce que cette chose à charge devrait être fermée. 2) qu'à la fois, une seule div devrait être ouverte.

cela fonctionne très bien. Le problème est que si je clique sur le même div que j'ai cliqué pour ouvrir il a deux attr isopen personnalisé maintenant il casse le deuxième cas. comment le résoudre.

Répondre

0

Vous avez trouvé le travail.

fonctions mises à jour.

var glDivID = 0; 
     function testToggle(testDiv) { 
     debugger 
     var sntHdnValue = $('#hdnSetFlag').val(); 
     var dvID = $(testDiv).attr('id'); 
     if (sntHdnValue == 1) { 
       $(testDiv).find('div:first').show().attr('isOpen', 'true'); 
      } 
      else { 
      $(testDiv) 
      .parents('table:first') 
      .find('div[isOpen=true]').removeAttr('isOpen').toggle('slow'); 
      if (glDivID != dvID) { 
       $(testDiv).find('div:first').show().attr('isOpen', 'true'); 
      } 
      } 
      sntHdnValue++; 
      $('#hdnSetFlag').val(sntHdnValue); 
      glDivID = dvID; 
     } 

i id un joint en annexe au moment de l'ajout de données au grid.checked même pour vérifier si elle est un auto cliqué ou non le tour est joué

Questions connexes