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 :

valeur de ma dropdownlist toujours null


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut valeur de ma dropdownlist toujours null
    Bonjour à tous,
    voilà j'ai une dropdownlist qui contient plusieurs éléments comme suit:
    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
    <div class="double_list">
                <div class="double_list_left">
                    <cc1:CEALabel runat="server" ID="UtilisateursEdit_Lbl_Role" AssociatedControlID="UtilisateursEdit_Ddl_Role"></cc1:CEALabel>
                    <cc1:CEADropDownList runat="server" ID="UtilisateursEdit_Ddl_Role">
                        <asp:ListItem></asp:ListItem>
                        <asp:ListItem>Toto</asp:ListItem>
                        <asp:ListItem>Tutu</asp:ListItem>
                        <asp:ListItem>Tata</asp:ListItem>
                    </cc1:CEADropDownList>
                </div>
                <div class="double_list_center">
                    <div class="form_line">
                        <cc1:CEAButton runat="server" ID="UtilisateursEdit_Btn_AjouterRole" OnClientClick="ajouter();"/>
                    </div>
                    <div class="form_line">
                        <cc1:CEAButton runat="server" ID="UtilisateursEdit_Btn_SupprimerRole" />
                    </div>
                </div>
                <div class="double_list_right">
                    <cc1:CEAListBox runat="server" ID="UtilisateursEdit_Ddl_RoleAttribue">
                        <asp:ListItem></asp:ListItem>
                    </cc1:CEAListBox>
                </div>
            </div>
    quand je clique sur le bouton qui fait appel à la fonction ajouter décrite ci dessous, cette dernière ne fonctionne pas correctemnt et me renvoie toujours une valeur nulle pour dll1 comme si ma liste était vide
    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
    function ajouter()
    {
        var ddl1 = document.getElementById('UtilisateursEdit_Ddl_Role');
        var ddl2 = document.getElementById('UtilisateursEdit_Ddl_RoleAttribue');
        alert(ddl1);
    	if (ddl1.options.selectedIndex>=0)
    	{
    		o=new Option(ddl1.options[ddl1.options.selectedIndex].firstChild.data,ddl1.options[ddl1.options.selectedIndex].value);
    		ddl2.appendChild(o);
    		ddl1.options[ddl1.options.selectedIndex]=null;
    	}
    	else
    	{
    	alert("Veuillez séléctionner un élément");
    	}
    }
    Pourriez vous me dire où ça cloche svp? j'ai passé une demi journée à essayer de trouver mais en vain.
    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par SALISTASE Voir le message
    quand je clique sur le bouton qui fait appel à la fonction ajouter décrite ci dessous, cette dernière ne fonctionne pas correctemnt et me renvoie toujours une valeur nulle pour dll1 comme si ma liste était vide
    La, comme ca, je dirais que tu essayes d'accéder à un controle dont l'id serait UtilisateursEdit_Ddl_Role....alors que coté client, ce n'est pas ca

    essaye comme ca :
    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
     
    function ajouter()
    {
        var ddl1 = document.getElementById('<%= UtilisateursEdit_Ddl_Role.ClientID %>');
        var ddl2 = document.getElementById('<%= UtilisateursEdit_Ddl_RoleAttribue.ClientID %>');
        alert(ddl1);
    	if (ddl1.options.selectedIndex>=0)
    	{
    		o=new Option(ddl1.options[ddl1.options.selectedIndex].firstChild.data,ddl1.options[ddl1.options.selectedIndex].value);
    		ddl2.appendChild(o);
    		ddl1.options[ddl1.options.selectedIndex]=null;
    	}
    	else
    	{
    	alert("Veuillez séléctionner un élément");
    	}
    }

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Bonjour,
    j'ai testé ce matin ce que vous m'avez proposé mais ça ne fonctionne toujours pas.

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    regarde dans le code source de ta page, cote client, si tu trouve ta dropdown, et, si oui, l'id qu'elle a cote client

    sinon, question bete, quand tu dis que la fonction renvoie null, c'est bien dans ta boite d'alerte ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    voici le code source de ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <div class="double_list">
                <div class="double_list_left">
                    <label for="ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_Role" id="ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Lbl_Role" title="Roles : " class="normalLabel">Roles : </label>
                    <select name="ctl00$CEA_ContentPlaceHolder$UC_Admin_Ctn_Utilisateurs_EditID$UtilisateursEdit_Ddl_Role" id="ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_Role" class="textboxlarge">
    	<option value=""></option>
    	<option value="Toto">Toto</option>
    	<option value="Tata">Tata</option>
    	<option value="Titi">Titi</option>
     
    </select>
     
                </div>
    L'Id de ma dropdownlist n'est pas celui que j'utilise en javascript. Dois je utiliser celui du code source?pourquoi?
    Effectivement l'alert m'affiche null

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        var ddl1 = document.getElementById('<%= UtilisateursEdit_Ddl_Role.ClientID %>');
        var ddl2 = document.getElementById('<%= UtilisateursEdit_Ddl_RoleAttribue.ClientID %>');

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Voilà j'ai testé avec le nouveau id en mettant simplement dans ma fonction ajouter()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function ajouter()
    {
        var ddl1 = document.getElementById('ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_Role');
        var ddl2 = document.getElementById('ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_RoleAttribue');
        alert(ddl1);
    sur ma page, quand je clique sur le bouton ajouter "alert" m'affiche " [object HtmlSelectElement] puis l'élément sélectionné passe dans la nouvelle liste mais disparait juste après, un affichage rapide.
    normalement ma fonction est censé ajouter l'élément ds la nouvelle liste et le supprimer de la première, or ce n'est pas le cas, il y a juste un affichage rapide dans la nouvelle liste mais il ne disparait pas de la première.

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var ddl1 = document.getElementById('ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_Role');
        var ddl2 = document.getElementById('ctl00_CEA_ContentPlaceHolder_UC_Admin_Ctn_Utilisateurs_EditID_UtilisateursEdit_Ddl_RoleAttribue');
    donc, comme on te disais avec lutecefalco, utilise ClientID...

    si "alert" affiche " [object HtmlSelectElement], ce n'est pas nul, c'est que, comme c'est un objet, il affiche le toString de l'objet
    (je rappelle que ta question d';origine, c'etait "...me renvoie toujours une valeur nulle pour dll1 comme si ma liste était vide")

    Pour ton pb de javascript, essaye plutot ca, au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ddl1.options[ddl1.options.selectedIndex]=null;
    tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RemoveSelectedElements(ddl1);
    Avec cette fonction en plus :

    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
    function RemoveSelectedElement(list){
     
        var tmp = new Array();
        var tmpLength = 0;
     
        //looping through source element to find selected options
        for (var i = 0; i < list.length; i++) {
            if (list.options[i].selected) {
                //we won't copy this item
            }
            else {
                //storing options that stay to recreate select element
                var objTempValues = new Object();
                objTempValues.text = list.options[i].text;
                objTempValues.value = list.options[i].value;
                tmp[tmpLength] = objTempValues;
                tmpLength++;
            }
        }
     
        //resetting length of source
        list.length = tmp.length;
     
        //looping through temp array to recreate source select element
        for (var i = 0; i < tmp.length; i++) {
            list.options[i].text = tmp[i].text;
            list.options[i].value = tmp[i].value;
            list.options[i].selected = false;
        }
    }

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Re Bonjour,
    en mettant le ClientID, ça ne fonctionne pas.
    Donc j'ai gardé comme je l'ai marqué avant.
    j'ai essayé d'utiliser votre fonction, ça marche bien pour la suppression de la première liste sauf que l'affichage dans la deuxième liste est toujours rapide, l'élément apparait 1 seconde puis disparait, j'ai l'impression d'avoir un rechargement de la page
    j'ai essayé de mettre un AutoPostback = false dans ma dropdownlist mais ça ne fonctionne toujours pas.

  10. #10
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    j'ai l'impression d'avoir un rechargement de la page
    ok, donc, si ta page se recharge, c'est parce que le OnClientClick n'arrete pas le postback...ajoute un return false; apres ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <cc1:CEAButton runat="server" ID="UtilisateursEdit_Btn_AjouterRole" OnClientClick="ajouter();return false;"/>

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Super ça marche !!
    Mille merci pour votre aide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2008, 17h53
  2. recuperer la valeur d'une dropdownlist
    Par mouchkar dans le forum ASP.NET
    Réponses: 5
    Dernier message: 04/10/2006, 09h04
  3. [2.0] Valeur vide dans DropDownList
    Par davasm dans le forum ASP.NET
    Réponses: 3
    Dernier message: 23/06/2006, 15h00
  4. Réponses: 2
    Dernier message: 30/03/2006, 16h18
  5. Réponses: 5
    Dernier message: 24/01/2006, 21h05

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