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

jQuery Discussion :

Liste déroulante liée


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 20
    Par défaut Liste déroulante liée
    Bonjour à tous,

    Voilà, j'ai une difficulté dans mon code.
    J'ai réussi à faire des listes déroulantes liées, que je met ensuite dans une base SQL. Ensuite, j'ai un bouton permettant de visionner mon formulaire, mais pour cela, il faut que j'affiche les valeurs affichées, et donc simuler la sélection d'une option dans mon select.

    Je réussi à afficher la valeur dans mon premier select, mais pas dans mon deuxième !
    Voici pour le moment ce que je fais :

    Etablissement.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $(function () {
        $('#DirectionID').change( function () {
            var URL = $('#EIPForm').data('etablissementListAction');
            $.getJSON(URL + '/' + $('#DirectionID').val(), function (data) {
                var items = '';
                $.each(data, function (i, etablissement) {
                    items += "<option value='" + etablissement.Value + "'>" + etablissement.Text + "</option>";
                    // state.Value cannot contain ' character. We are OK because state.Value = cnt++;
                });
                $('#EtablissementID').html(items);
            });
        });
    });
    Direction.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $(function () {
        var URL = $('#EIPForm').data('directionListAction');
        $.getJSON(URL, function (data) {
            var items = "";
            $.each(data, function (i, direction) {
                if (direction.Value.indexOf("\'") > -1) {
                    s = direction.Value + " " + direction.Text;
                    alert(s + ": Direction.Value cannot contain \'")
                }
                items += "<option value='" + direction.Value + "'>" + direction.Text + "</option>";
            });
            $('#DirectionID').html(items);
        });
    });
    Et dans ma vue, je fais çà pour récupérer la bonne valeur dans mon premier select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(function () {
                $('#test').click(function (event, test) {
     
                    var direction = $('#DIRECTION').val()
                    $("#DirectionID option[value ='" + direction + "']").attr("selected", "selected");
     
                })
            });
    J'ai essayé de faire la même chose pour le deuxième select, mais elle reste toujours vide ! Je voudrais donc qu'il affiche la valeur stockée en base de donnée

    PS : les champs DIRECTION et ETABLISSEMENT sont des champs cachés, ce sont eux qui communiquent avec ma BDD.

    Merci à tous par avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 20
    Par défaut
    J'ai trouvé la solution.
    La problème était qu'il fallait que je charge les listes après avoir modifiés les valeurs, pour seulement après refaire la même chose que sur la première liste.

    Du coup, par exemple, Etablissement.js devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $(function () {
        $('#DirectionID').change(function () {
            var URL = $('#EIPForm').data('etablissementListAction');
            $.getJSON(URL + '/' + $('#DirectionID').val(), function (data) {
                var items = '';
                $.each(data, function (i, etablissement) {
                    items += "<option value='" + etablissement.Value + "'>" + etablissement.Text + "</option>";
                });
                $('#EtablissementID').html(items);
            });
        });
    });
     
    function LoadEtablissement(etablissement) {
            var URL = $('#EIPForm').data('etablissementListAction');
            $.getJSON(URL + '/' + $('#DirectionID').val(), function (data) {
                var items = '';
                $.each(data, function (i, etablissement) {
                    items += "<option value='" + etablissement.Value + "'>" + etablissement.Text + "</option>";
                });
                $('#EtablissementID').html(items);
                $("#EtablissementID option[value ='" + etablissement + "']").attr("selected", "selected");
        });
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Par défaut
    Bonjour.
    Peux-tu stp mettre les vues pour voir mieux la solution ?
    Merci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            <td>
                <select id="DirectionID" style="width:220px"></select>
            </td>
     
            <td colspan="2">
                <select id="EtablissementID" style="width:220px"></select>
            </td>
    Avec le JS déjà précisé au dessus et quelques lignes dans mon contrôleur que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    public SelectList GetDirectionSelectList()
            {
     
                var directions = db.EIP_PARAM_DIRECTION.ToList();
                return new SelectList(directions.ToArray(),
                                    "ID",
                                    "LIBELLE");
     
            }
     
            public SelectList GetAxeSelectList()
            {
                var axes = db.EIP_PARAM_AXE.ToList();
                return new SelectList(axes.ToArray(),
                                    "ID",
                                    "LIBELLE");
            }
     
            public ActionResult AxeList()
            {
                var axes = db.EIP_PARAM_AXE.ToList();
     
                if (HttpContext.Request.IsAjaxRequest())
                    return Json(GetAxeSelectList(), JsonRequestBehavior.AllowGet);
     
                return RedirectToAction("Index");
            }
     
            public ActionResult PlanList(string ID)
            {
                string Code = ID;
                var plans = from p in db.EIP_PARAM_PLAN.ToList()
                            where p.ID_AXE.ToString() == Code
                            select p;
     
                if (HttpContext.Request.IsAjaxRequest())
                    return Json(new SelectList(
                                    plans.ToArray(),
                                    "ID",
                                    "LIBELLE")
                                    , JsonRequestBehavior.AllowGet);
     
                return RedirectToAction("Index");
            }
     
            public ActionResult DirectionList()
            {
                var directions = db.EIP_PARAM_DIRECTION.ToList();
     
                if (HttpContext.Request.IsAjaxRequest())
                    return Json(GetDirectionSelectList(), JsonRequestBehavior.AllowGet);
     
                return RedirectToAction("Index");
            }
     
            public ActionResult EtablissementList(string ID)
            {
                string Code = ID;
                var etablissements = from s in db.EIP_PARAM_ETABLISSEMENT.ToList()
                                     where s.ID_DIRECTION.ToString() == Code
                                     select s;
     
                if (HttpContext.Request.IsAjaxRequest())
                    return Json(new SelectList(
                                    etablissements.ToArray(),
                                    "ID",
                                    "LIBELLE")
                               , JsonRequestBehavior.AllowGet);
     
                return RedirectToAction("Index");
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Debug script listes déroulantes liées
    Par AnTiX dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/04/2005, 12h03
  2. Griser 1 liste déroulante liée à une autre, pb de concaténat
    Par linou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 16h45
  3. listes déroulantes liées
    Par k4eve dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/04/2004, 15h11
  4. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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