2009-11-06 6 views
0

J'ai un GridView avec quelques colonnes. Une des colonnes est un bouton. Il est dans un champ de modèle qui ressemble à ceci:L'événement Jquery click ne se déclenche pas une deuxième fois avec le bouton dans asp.net GridView?

<asp:TemplateField> 
<ItemTemplate> 
    <asp:Button ID="btnApply" Text="View Details" CssClass="viewdetails" runat="server"/> 
</ItemTemplate> 
</asp:TemplateField> 

Mon code JQuery est la suivante:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.viewall, .viewdetails').click(function() { 
      alert('Must be a member to view all'); 
     }); 
    }); 
</script> 

Quand je visite la page et cliquez sur le bouton voir les détails, l'alerte apparaît, mais après cela, si je clique sur un autre bouton de détails de la vue, il n'apparaît pas jusqu'à ce que la page soit actualisée. Le bouton Afficher tout affiche le message tout le temps car lorsque je clique dessus, la page est actualisée.

Quelques notes. Le bouton Afficher les détails se trouve à l'intérieur d'un GridView asp.net et le GridView se trouve dans un UpdatePanel asp.net.

De plus, puisque view all et viewdetails appelle le même message, existe-t-il un moyen de les combiner en un seul clic, par exemple $ ('.viewall .viewdetails'). Click (....... Si je supprime le panneau de mise à jour, cela fonctionne, mais chaque fois que je clique sur Afficher tout ou Afficher les détails, j'obtiens un scintillement, donc j'ai ajouté un retour faux, ce qui empêche le scintillement à la page du membre s'ils sont effectivement connectés. Si je retire le message "false" et qu'ils sont connectés, le message apparaitra toujours et les redirigera vers la page membre, ce qui n'est évidemment pas supposé se produire, mais je ne suis pas sûr Les événements devraient être:

Si l'utilisateur n'est pas connecté et clique sur le bouton Afficher tout ou Afficher les détails, affiche un message indiquant qu'il doit se connecter ou devenir membre.

Si l'utilisateur est connecté et qu'il clique sur le bouton Afficher tout ou Afficher les détails, redirigez-le vers la page Membres. Voir tous les deux et Afficher les détails ont des événements de clic côté serveur qui font un Response.Redirect aux Membres page s'ils sont connectés.

+0

il ne faut pas tirer du tout, parce que vous utilisez un mauvais nom de classe dans votre sélecteur jQuery ... –

+0

Mon erreur, il est effectivement appelé viewdetails, je vais le réparer. – Xaisoft

Répondre

2

Vous devez annuler l'événement click dans ces cas ...

$(document).ready(function() { 
     $('.viewall').click(function(e) { 
      alert('Must be a member to view all'); 
      e.preventDefault(); 
     }); 
     $('.viewdetails').click(function(e) { 
      alert('Must be a member to view all'); 
      e.preventDefault(); 
     }); 
    }); 

vous pouvez utiliser plusieurs sélecteurs en les délimitant par une virgule ...

$(".selector1, .selector2").click(function() { ... }); 
+0

Ok, en délimitant les sélecteurs avec une virgule travaillée, mais le preventDefault ne fonctionne pas. Si l'utilisateur est connecté, il doit aller sur la page Memebrs et ne pas voir l'alerte. – Xaisoft

+0

Eh bien, vous devrez comprendre cette logique, car vous ne fournissez aucun détail –

+0

Quels détails puis-je ajouter? Est-il possible de cliquer sur un bouton pour ne déclencher le code jquery que si l'utilisateur n'est pas connecté? – Xaisoft

Questions connexes