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 Discussion :

[C#] Sélectionner une valeur dans une dropdownlist


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut [C#] Sélectionner une valeur dans une dropdownlist
    Bonjour à tous,

    j'ai un problème dans un projet que je dois faire pour les cours, qui est le suivant :

    J'ai une DropDownList qui actualise la page sur laquelle on se trouve. Je voudrais que le choix sélectionné le reste une fois la page rechargée mais, après de nombreuses tentatives, je n'ai pas réussi à la faire.

    Voici actuellement ou j'en suis :

    Dans ma méthode "Page_Load" qui est utilisée à chaque chargement de la page, je récupère une variable en QueryString afin de savoir quelle est la valeur sélectionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string idCategorie = Request.QueryString["idCategorie"];
                ListItem li = DropDownListCategorie.Items.FindByValue(idCategorie);
     
                if (li != null)
                {
                    li.Selected = true;
                }
    Malheureusement, rien ne se passe... Ma variable "li" reste null... Pourtant, la queryString "idCategorie", elle, ne l'est pas...

    Est-ce que quelqu'un peut m'aider ?

    Merci beaucoup ;-)

  2. #2
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Déjà, je t'invite à aller voir le cycle de vie d'une page aspx. Tu y trouveras certaines infos utiles.

    Ensuite, de mémoire, il doit y avoir une propriété EnabledViewState sur ton composant, est-il a true ?

    Enfin, dans ton Page_Load, si tu charges des données, il serait peut-être faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!Page.IsPostBack){/*chargement*/}
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

  3. #3
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Pour ce genre de problème, j'ai également tendance à faire le databind de ma liste dans le OnInit. Ainsi je suis sure que lorsque le viewstate rétablit les données(après le OnInitComplete et avant le onPreLoad) ma liste est rempli et que la surcharge avec la valeur sélectionnée sera ok
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  4. #4
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    tout à fait, c'est pour ça que je parlait du cycle de vie de la page, car chaque événement sert à quelques chose... en plus, il faut faire attention aux éléments imbriqués (genre ascx dans aspx)...

    Par exemple, si tu veux toucher au rendu, tu le fais dans le prerender...
    En informatique, le problème se situe toujours entre le clavier et l'écran !
    Il y a deux chemins entre le clavier et l'écran : Par l'UC et par l'utilisateur.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses !

    Etant donné que je suis encore débutant dans le domaine, je n'ai malheureusement pas tout compris...

    J'ai remarqué que la plupart de mes problèmes avaient un rapport avec le "DataBind". Comment peut-on définir quand est-ce qu'on le fait ?

    (J'espère m'exprimer correctement... )

    Merci ;-)

  6. #6
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Bonjour

    As tu essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(DropDownListCategorie.Items.FindByValue(idCategorie) != null)
    {
      DropDownListCategorie.SelectedValue = idCategorie;
    }
    Cordialement
    Christophe B.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    oui j'ai essayé mais malheureusement mon "DropDownListCategorie.Items.FindByValue(idCategorie)" reste tout le temps nul... Je n'arrive pas à comprendre pourquoi.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    il faut le faire dans l'évènement Databound,

    voici un exemple de chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        protected void dplCLIENT_DataBound(object sender, EventArgs e)
        {
            ListItem li;
     
            li = dplCLIENT.Items.FindByValue(l_USR.CLI_id.ToString());
            if (li != null)
                li.Selected = true;
        }
    si ça ne fonctionne pas il faut ajouter aussi AppendDataBoundItems="True" au dropdownlist, mais je ne suis pas sûre de ça

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    vhoward99 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void dplCLIENT_DataBound(object sender, EventArgs e)
        {
            ListItem li;
     
            li = dplCLIENT.Items.FindByValue(l_USR.CLI_id.ToString());
            if (li != null)
                li.Selected = true;
        }
    Ce code fonctionnera que si on a un DataBind sur la DropDownList "dplCLIENT". Par contre notre amis P.O.K ne précise pas s'il fait un DataBind ou pas sur sa DropDownList !!!

    P.O.K :

    Peut-tu nous montrer comment tu remplie ton DropDownListCategorie ?

    Cdt,

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    dsl pour le retard, je n'étais pas disponible ces derniers jours...

    Pour remplir mon DataList, j'ai utilisé les composants de visual studio, ce qui me donne ceci :

    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
                            <tr>
                                <td align="left">
                                    <asp:DropDownList ID="DropDownListCategorie" runat="server" 
                                        DataSourceID="SqlDataSourceCategories" DataTextField="CATEGORIE" 
                                        DataValueField="IDCATEGORIE"
                                        AutoPostBack="true"
                                        EnableViewState="true"
                                        onselectedindexchanged="DropDownListCategorie_SelectedIndexChanged">
                                    </asp:DropDownList>
                                </td>
                            </tr>
                            <asp:SqlDataSource ID="SqlDataSourceCategories" runat="server" 
                                ConnectionString="<%$ ConnectionStrings:Projet_MediathequeConnectionString %>" 
     
                                    SelectCommand="SELECT DISTINCT C.CATEGORIE, C.IDCATEGORIE FROM TYPEMEDIAS T, CATEGORIE C, MEDIAS M WHERE T.IDTYPE = M.IDTYPE AND C.IDCATEGORIE = M.IDCATEGORIE AND T.IDTYPE = @IDTYPE">
                                <SelectParameters>
                                    <asp:QueryStringParameter DefaultValue="0" Name="IDTYPE" 
                                        QueryStringField="idType" />
                                </SelectParameters>
                            </asp:SqlDataSource>

    Je n'ai rien du côté de la page ".cs", c'est peut-être cela qui pose problème ?

    Merci beaucoup

    Meilleures salutations

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    POK :
    Dans ma méthode "Page_Load" qui est utilisée à chaque chargement de la page, je récupère une variable en QueryString afin de savoir quelle est la valeur sélectionnée.
    1- Je dirait plutôt la valeur à sélectionner , n'est ce pas !? Corrige moi si je me trompe ! parce que en faite tu ne peut pas savoir la valeur sélectionnée lors du premier chargement de la page. Ce qui est logique...

    Si c'est le cas voilà ce que je peut te proposer d'après mes souvenirs :

    1- Ajouter un événement "ondatabound" à ta DropDownList comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <asp:DropDownList ID="DropDownListCategorie" runat="server" 
                               DataSourceID="SqlDataSourceCategories"          DataTextField="CATEGORIE" 
                                        DataValueField="IDCATEGORIE"
                                        AutoPostBack="true"
                                        EnableViewState="true"
                                        onselectedindexchanged="DropDownListCategorie_SelectedIndexChanged"
    ondatabound="DropDownListCategorie_DataBound"
                                    </asp:DropDownList>
    2- Et coté Code Behind :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void DropDownListCategorie_DataBound(object sender, EventArgs e)
            {
    string idCategorie = Request.QueryString["idCategorie"];
     
    DropDownListCategorie.SelectedIndex =
              DropDownListCategorie.Items.IndexOf
              (DropDownListCategorie.Items.FindByValue(idCategorie ));
            }
    A tester !

    Bon courage

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Ca fonctionne !

    C'est exactement ce que je voulais, merci beaucoup !!!

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Points : 110
    Points
    110
    Par défaut
    Si ça fonctionne , merci de mettre

    Cdt,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 14h23
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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