none
Select et option avec (selected="selected") automatique en fonction du mois

    Discussion générale

  • Bonjour à tous,

    Je viens de (pardonnez moi l'expression) bidouiller une liste déroulante avec les douze mois de l'année et un selected automatique en fonction du mois en cours...

    ça fonctionne mais je trouve ça un peu lourd, ma question est :

    Est-il possible de simplifier ce code ?

    Je suis à cours d'idées, merci pour votre aide.

        @{
    
                               int Mois = DateTime.Now.Month;
                               string MoisAnnée1 = "";
                               string MoisAnnée2 = "";
                               string MoisAnnée3 = "";
                               string MoisAnnée4 = "";
                               string MoisAnnée5 = "";
                               string MoisAnnée6 = "";
                               string MoisAnnée7 = "";
                               string MoisAnnée8 = "";
                               string MoisAnnée9 = "";
                               string MoisAnnée10 = "";
                               string MoisAnnée11 = "";
                               string MoisAnnée12 = "";
    
    
                               switch (Mois)
                               {
    
                                   case 1:
                                       MoisAnnée1 = "selected=\"selected\"";
                                       break;
                                   case 2:
                                       MoisAnnée2 = "selected=\"selected\"";
                                       break;
                                   case 3:
                                       MoisAnnée3 = "selected=\"selected\"";
                                       break;
                                   case 4:
                                       MoisAnnée4 = "selected=\"selected\"";
                                       break;
                                   case 5:
                                       MoisAnnée5 = "selected=\"selected\"";
                                       break;
                                   case 6:
                                       MoisAnnée6 = "selected=\"selected\"";
                                       break;
                                   case 7:
                                       MoisAnnée7 = "selected=\"selected\"";
                                       break;
                                   case 8:
                                       MoisAnnée8 = "selected=\"selected\"";
                                       break;
                                   case 9:
                                       MoisAnnée9 = "selected=\"selected\"";
                                       break;
                                   case 10:
                                       MoisAnnée10 = "selected=\"selected\"";
                                       break;
                                   case 11:
                                       MoisAnnée11 = "selected=\"selected\"";
                                       break;
                                   case 12:
                                       MoisAnnée12 = "selected=\"selected\"";
                                       break;
                               }
    
                           }
    
                       <select id="Select1">
                           <option @MoisAnnée1 value="1">Janvier</option>
                           <option @MoisAnnée2 value="2">Février</option>
                           <option @MoisAnnée3 value="3">Mars</option>
                           <option @MoisAnnée4 value="4">Avril</option>
                           <option @MoisAnnée5 value="5">Mai</option>
                           <option @MoisAnnée6 value="6">Juin</option>
                           <option @MoisAnnée7 value="7">Juillet</option>
                           <option @MoisAnnée8 value="8">Août</option>
                           <option @MoisAnnée9 value="9">Septembre</option>
                           <option @MoisAnnée10 value="10">Octobre</option>
                           <option @MoisAnnée11 value="11">Novembre</option>
                           <option @MoisAnnée12 value="12">Décembre</option>
                       </select>
    Bruno


    Bruno

    jeudi 8 février 2018 18:05

Toutes les réponses

  • Bonjour,

    vous pouvez charger votre liste de mois et mettre comme valeur sélectionnée la valeur du mois courant.

    Ceci devrait vous aider:

    https://stackoverflow.com/questions/17287744/combobox-to-display-current-month

    Cordialement

    vendredi 9 février 2018 08:10
  • Bonjour,

    Est-ce que je me trompe ou la réponse parle d'un Combobox ? Il me semble qu'il s'agit là d'un contrôle WinForm ?

    Or, la syntaxe détaillée dans la question me paraît typique de HTML, même si le forum lui est plutôt dédié au développement en client lourd -ça me laisse d'ailleurs l'impression qu'on a oublié de fermer une balise quelque part.

    Bon si je me suis trompé je disparais de la circulation, mais sinon il vaut mieux éviter de perdre du temps avec quelque chose qui ne concerne pas la même plateforme.

    Au demeurant Asp.Net propose des contrôles qui permettent le rendu indiqué dans la question (je pense surtout à DropDownList), avec possibilité d'indiquer une valeur par défaut, mais ... Là aussi je peux me voir reprocher de changer de plateforme, même si la plateforme cible est cette fois la même.

    C'est plus léger à manipuler parce qu'on a déjà un outil de chargé, qui s'occupe de mettre l'attribut selected au bon endroit. Autrement ... Si quelqu'un voit plus élégant ça m'intéresse, mais ça ne me vient pas à l'esprit.


    • Modifié Gloops vendredi 9 février 2018 15:07
    vendredi 9 février 2018 15:04
  • A la réflexion ...

    Si on modifie le rendu ainsi :

                       <select id="Select1">
                           <option @MoisAnnée1 @Selected1 value="1">Janvier</option>
                           <option @MoisAnnée2 @Selected2 value="2">Février</option>
                           <option @MoisAnnée3 @Selected3 value="3">Mars</option>
                           <option @MoisAnnée4 @Selected4 value="4">Avril</option>
                           <option @MoisAnnée5 @Selected5 value="5">Mai</option>
                           <option @MoisAnnée6 @Selected6 value="6">Juin</option>
                           <option @MoisAnnée7 @Selected7 value="7">Juillet</option>
                           <option @MoisAnnée8 @Selected8 value="8">Août</option>
                           <option @MoisAnnée9 @Selected9 value="9">Septembre</option>
                           <option @MoisAnnée10 @Selected10 value="10">Octobre</option>
                           <option @MoisAnnée11 @Selected11 value="11">Novembre</option>
                           <option @MoisAnnée12 @Selected12 value="12">Décembre</option>
                       </select>

    ça peut donner des idées, comme avoir un tableau selected qui contient des chaînes vides sauf pour celle qui contient selected.

    Il se peut bien que ça soit aussi de la bidouille, je précise que je n'ai pas testé. D'ailleurs j'ai repris l'arrobase parce que c'était ça que j'avais sous les yeux, mais j'aurais dû vérifier le sens que ça a, peut-être qu'il faut une autre syntaxe pour placer la valeur d'une variable.


    • Modifié Gloops vendredi 9 février 2018 15:17
    vendredi 9 février 2018 15:14