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

Bibliothèques & Frameworks Discussion :

Raffraichir un Select


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Par défaut Raffraichir un Select
    Bonjour à tous,
    Mon probleme est le suivant :

    J'ai 2 widgets de type dijit.form.Select, que je rempli avec exactement la même liste (une liste créée dans une action JAVA, car j'utilise également Struts 2).
    Je voudrais faire en sorte que dès que je sélectionne une option dans ma 1ere liste par exemple, cette option soit désactivée dans ma 2nde liste (pour éviter de choisir 2 fois la même). J'ai réussi cette étape sans trop de difficulté, mais le problème que je rencontre et que des que j'ai ouvert ma 2eme liste ne serais ce qu'une fois, elle ne se mettra plus jamais a jour.
    Même si je sélectionne un autre choix dans ma 1ere liste, l'option qui sera grisée dans ma 2nde liste restera la dernière que j'ai choisi AVANT d'ouvrir pour la 1ere fois ma 2nde liste (j'espère que c'est a peu près clair ). J'en ai conclu qu'une fois la liste ouverte, elle ne se mettra plus à jour (du moins coté affichage)

    J'ai testé de faire un "jdijit.byId("maliste").reset()" avant d'effectuer mes modifs, mais ca n'a pas l'air de fonctionner.

    Ma fonction simplifiée :
    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
    function removeSelectedOption(){
               var liste1 = dijit.byId("codeModif1");
               var liste2 = dijit.byId("codeModif2");
               var liste1OptionChoisieValue = liste1.get("value");
     
               if(liste1OptionChoisieValue != null){
                   liste2.reset();
                   for(var i = 0; i < tailleDeMaListe; i++){
     
                       liste2.getOptions(i).disabled = false; // Par défaut j'active toutes mes options
     
                       // Si la valeur en cours de ma liste 2 = valeur sélectionnée dans liste 1 , je désactive la ligne  
                       if(liste2.getOptions(i).value == liste1OptionChoisieValue){
                           liste2.getOptions(i).disabled = true;
                       }
                   }
               }
           }
    je t'ai mis des noms de var un peu plus parlant ^^
     Envoyé jeudi à 17:44
    Si quelqu'un a une idée, je prends

    Merci

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Ton problème vient du fait que les options gérées par Dojo ne sont pas les mêmes que celles d'un select HTML...
    Chaque option est en fait un objet du type value, label, selected, disabled.

    Donc plutôt que faire ta mise à jour de manière standard, utilise la méthode updateOption du Select dijit.

    ERE

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Par défaut
    Salut, et merci pour ta réponse.

    D'après ce que je lis dans la doc de l'API : "Updates the values of the given option. The option to update is matched based on the value of the entered option.", et si je comprends bien cette phrase, ca veut dire que je dois me servir de ca si je fais modifier la value de mon option.
    Or, je ne voudrais pas la modifier, mais simplement "désactiver" (disabled = true) de cette option.

    J'ai bien compris le but de cette fonction ?

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Exactement. Techniquement tu crées un objet avec uniquement 'value' et 'disabled' comme attribut.
    Dojo va chercher l'option correspondante à partir du 'value' et va y copier les attributs fournis, donc ton disabled.

    Quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    var opt = { value:"1", disabled:true };
     
    selectDijit.updateOption(opt);
    ERE

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Par défaut
    Ok je vois l'idée.
    Je récupère ma value de ma première liste (celle que je veux désactiver dans ma 2eme liste donc), je crée un nouvel objet en ayant pour paramètre value ma value sélectionnée, et en faisant ça, Dojo va réussir a matcher avec celle déja existante, et va donc simplement appliquer l'attribut "disabled = true" c'est ça?

    Et s'il ne la trouve pas, ça génère une exception ou autre ?

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    A mon avis s'il ne la trouve pas il ne fait rien puisque c'est un update

    EDIT: Si tu veux en être sûr tu fais un test avec la console ça prends 12s...
    -----


    ERE

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. SELECT
    Par Thomad dans le forum SQL
    Réponses: 2
    Dernier message: 13/03/2003, 20h56
  4. TEdit : selection du texte et autre fonction
    Par Odulo dans le forum Composants VCL
    Réponses: 5
    Dernier message: 01/08/2002, 14h27
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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