2010-01-15 4 views
1

J'utilise une liste déroulante en cascade de http://stephenwalther.com/blog/archive/2008/09/07/asp-net-mvc-tip-41-creating-cascading-dropdown-lists-with-ajax.aspx.événement de changement de déclenchement dans la liste déroulante en cascade

Je dois définir une valeur dans la liste déroulante et appeler l'événement change, de sorte que la liste déroulante en cascade ne semble pas vide pour la première fois.

Mais l'événement de changement ne demande pas aux essais:

  $('#Country').trigger('change'); 
         or 
      $('#Country').change(); 

Comment puis-je appeler l'événement de changement pour ce menu déroulant pour déclencher le menu déroulant en cascade.

+0

Quelle est votre solution? –

Répondre

0

Vos commandes dropdownlist sont-elles côté serveur (asp: dropdownlist tag) ou client (select tag)?

Si elles sont côté serveur, vous avez besoin d'injecter l'ID côté client pour les contrôles. Cela pourrait être la cause de l'absence de tir d'événement.

Dans ASP.NET, les contrôles côté serveur ont un autre, généré ID clientside (donc un DropDownList avec ID « Pays » aura un ID clientside de quelque chose comme ct01_ct050_Country.

Dans ces cas, vous pouvez injecter le clientside ID lors de l'exécution sur votre balisage, en utilisant:

$('#<% Country.ClientID %>').change(function() { 
    //code here 
}); 

lors de l'exécution, le code rendu/balisage finira par ressembler à:

$('#ct01_ct050_Country').change(function() { 
    //code here 
}); 

votre autre option pour éviter les ID client/serveur est d'appliquer un nom de classe CSS unique pour le contrôle et sélectionnez par celui-ci à la place:

Markup:

<asp:DropDownList ID="Country" CssClass="countryDD" runat="server" /> 

et jQuery:

$('select.countryDD').change(function() { 
    //code here 
}); 

Cette réponse s'applique bien à ASP.NET droit. Je ne suis pas sûr que ce soit aussi pertinent pour MVC parce que je n'utilise pas ce framework, mais je suppose que c'est assez proche du concept ou du balisage par rapport au code client.

Hope this pourrait aider ...

+0

J'utilise <% = Html.DropDownList ("Country")%> et <% = Html.CascadingDropDownList ("States", "Country")%>. J'ai essayé les options comme je l'ai dit dans ma question, mais pas de chance avec ces options. Et j'utilise asp.net mvc (C#) pour mon application – Prasad

+0

Ok après avoir regardé MVC, je vois que vous n'avez pas besoin des identifiants de clients comme vous le faites avec ASP.NET traditionnel. Autres idées: avez-vous enveloppé votre code dans $ (document.ready (function() {// code ici}), pour vous assurer que la page était prête? Votre exemple de code contient également $ ("# Country"). Change(); Votre syntaxe est-elle correcte dans votre vrai code? $ ('# Country'). Change (function() {// code ici}); Ne sait pas si vous avez omis la partie "function() {}" pour plus de simplicité ou juste raté tout simplement ... –

0

Pour mes menus déroulants en cascade, j'utilise jqueryon ou bind

$('#Country').on('change', function() { 
    //Do stuff here 

}); 

$('#Country').bind('change', function() { 
    //Do stuff here 

});