IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Changer dynamiquement le contenu d'une DropDownList


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Changer dynamiquement le contenu d'une DropDownList
    Bonjour à tous.

    Voici le Contexte:
    -ASP DOT NET MVC3.
    -C#
    -BDD SQL SERVER 2008.

    Dans ma page ASP j'affiche 2 DropdownListBox.
    implémentées comme suit dans la vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="editor-field">
    		@Html.DropDownListFor(model => model.mavar, Model.maliste)
            @Html.ValidationMessageFor(model => model.mavar)
    	</div>
     
    	<div class="editor-field">
    		@Html.DropDownListFor(model => model.mavar2, Model.maliste2)
            @Html.ValidationMessageFor(model => model.mavar2)
    	</div>
    Les éléments des listes affichées par les DropDownListBox proviennent de la BDD.

    L'objectif que je n'arrive pas à atteindre est le suivant:
    J'aimerai modifier la liste affichée par la seconde DropDownList
    en fonction de l'élément choisi dans la première DropDownList

    Par exemple:
    Si la première DropDownList propose un choix de base de données.
    Alors la seconde DropDownList Affiche la liste des tables de la base sélectionné

    Cette action étant à effectuer sans avoir à appuyer sur un bouton autre que la première DropDownList.

    La solution passe très probablement par AJAX,mais voilà je n'ai pas trouvé comment la mettre en oeuvre.

    Si vous pouviez me donner un coup de main pour réaliser ceci, se serai Top.

    Quoi qu'il en soit, merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Comment récupérer dans mon contrôleur l'équivalent d'un évènement OnChange qui serait déclenché par la première DropDownListBox?

    J'ai réussi a peu près à faire ça en utilisant une "data annotation".
    utilisée comme suit dans mon modèle;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Remote("MaFonction",MonControlleur]
    public string mavar {get;set;}
    ceci fais que la méthode MaFonction est appelée plus ou moins au bon moment.

    par contre, que doit retourner cette fonction(quelle type d'objet?) pour que La seconde DropDownList soit modifié à convenance?
    ou alors, sans parler de modification, comment créer une nouvelle DropDownListFor dans la page affiché?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Points : 55
    Points
    55

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Bonjour,

    il va falloir que tu fasses ça en JavaScript, au OnSelect de ta première DropDownList il fuat que tu déclenches une action JS qui va recharger ta seconde DropDownList.

    Cordialement,
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Vu que tu utilises des tu peux également passer par l'ActionResult de ton controleur en utilisant
    De cette manière il te sera très simple de modifier tes listes.

    .:AO:.

  6. #6
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 45
    Points : 114
    Points
    114
    Par défaut
    Pour faire ceci je procède en plusieurs étapes:
    -la méthode javascript capte que je change de sélection dans ma première dropdownlist.
    -une méthode du controller est appelé pour renvoyer un IEnumerable contenant les données pour la seconde dropdownlist avec la sélection de la première dropdownlist en paramètre. J'utilise le Json pour récuperer les données. [JSONResult] est placé en haut de la méthode du controller.
    -le javascript récupère les données renvoyées par le controller en asynchrone et j'affiche le contenu grâce à javascript dans la second dropdownlist.

    Désolé si je ne suis pas clair.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2012, 15h38
  2. Réponses: 1
    Dernier message: 29/08/2006, 12h01
  3. Réponses: 10
    Dernier message: 16/05/2006, 11h25
  4. Réponses: 3
    Dernier message: 31/08/2005, 17h52
  5. Comment changer dynamiquement la valeur d'une option de DbGrid ?
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2005, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo