2010-05-20 7 views
3

J'ai un gridview dans un panneau de mise à jour et j'utilise une boîte de dialogue jQuery pour ajouter des entrées.Déclenchement du clic avec jQuery pour activer la fonction code-behind ne fonctionnant pas dans 1.4 - Fonctionne correctement dans 1.3.2

La boîte de dialogue appelle une fonction AJAX/JSON qui ajoute l'entrée. En cas de succès de cette fonction je jQuery déclenche un bouton clic sur un bouton caché

... 
     success: function(msg) { 
      $("[id$='_btnUpdateGrid']").trigger('click'); 
      $("#new_dialog").dialog('close'); 
     }, 
    ... 

qui devrait frapper un gestionnaire d'événements dans le code derrière pour mettre à jour la source de données et actualiser la gridview.

<asp:Button ID="btnUpdateGrid" runat="server" OnClick="btnUpdateGrid_Click" 
Text=" " Width="1px" Height="1px" Style="background-color:#F5F3E5; border:none;" /> 

Cela a très bien fonctionné avec 1.3.2. Mis à jour à la version 1.4.1 et il ne frappe plus le code-behind. L'AJAX fonctionne toujours mais je dois actualiser manuellement la page pour mettre à jour la grille.

En outre, je peux atteindre les gestionnaires d'événements côté client (par exemple OnClientClick = "alert ('hello')"), donc je sais que le clic se produit toujours, pas le gestionnaire d'événement code-behind. C'est comme si jquery bloquait la page de faire ça maintenant. J'ai vérifié cela en changeant simplement le numéro de version dans le chemin de référence du script et en voyant la fonctionnalité changer.

Est-ce un bug ou est-ce qu'il y a un autre moyen de le faire maintenant?

+0

relivez-vous vos boutons après l'actualisation du UpdatePanel? UpdatePanels est insidieux et déconnectera vos événements. – Jason

+0

Jason - Je sais de quoi tu parles mais dans ce cas je ne pense pas que ce soit nécessaire. Je n'ai pas eu à le faire pour 1.3.2. – HighHat

Répondre

0

Il s'avère que c'était juste la commande. Je ne sais pas pourquoi 1.3 n'a pas dérangé la commande mais c'est tout ce qu'il a fallu.

... 
    success: function(msg) { 
     $("#new_dialog").dialog('close'); 
     $("[id$='_btnUpdateGrid']").trigger('click'); 
    }, 
... 

fonctionne très bien.

0

Vous pouvez essayer de changer l'ID en ID ou vice-versa. Il pourrait s'agir d'un problème d'identifiant sensible à la casse.

+0

Merci pour l'entrée, mais j'en doute - j'ai aussi essayé avec un sélecteur de classes comme dans $ (". BtnUpdateGrid"). Trigger ('click'); et cela n'a toujours pas fonctionné dans 1.4 – HighHat

0

Essayez peut-être de lier le gestionnaire d'événements aux boutons en utilisant JavaScript, au lieu de le faire avec un attribut onClick dans le code HTML. jQuery vous permet de le faire en utilisant les liaisons d'événements en direct:

$("[id$='_btnUpdateGrid']").live("click", btnUpdateGrid_Click);

Je ne suis pas sûr que fera tout pour résoudre le problème, mais il vaut la peine d'essayer.

+0

Cela ne fonctionne pas du tout, désolé. – HighHat

Questions connexes