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#]ASP: "SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments" sur DropDownList [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 23
    Points : 17
    Points
    17
    Par défaut [C#]ASP: "SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments" sur DropDownList
    Bonjour,

    Je suis nouveau ici et je cherche un peu d'aide sur un problème de valeur non-récupérée par un Bind.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:DropDownList ID="ddlRefMonthSyntec" runat="server" AutoPostBack="false" DataSourceID="MonthSelectIndiceSyntecSqlDataSource"
                      DataTextField="mnth_lib" DataValueField="syntec_date_id" SelectedValue='<%# Bind("syntec_date_id")%>'>
    </asp:DropDownList>
     
    ...
     
    <asp:SqlDataSource ID="MonthSelectIndiceSyntecSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:csIntranet %>"
                        SelectCommand="GetSyntecIndc" SelectCommandType="StoredProcedure">
    J'obtiens l'erreur suivante :
    'ddlRefMonthSyntec' a un SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments.
    Nom du paramètre : value
    Ce que je souhaite faire :

    J'ai un tableau pour créer des prestations pour un client et dedans je dois renseigner un mois de référence pour l'indice Syntec.
    J'ai ma procédure stockée "GetSyntecIndc" qui me permet de récupérer 2 champs : syntec_date_id (par exemple 201201, année + mois concaténé) et mnth_lib (libellé du mois).
    Cette procédure alimente ma DropDownList qui est dans une balise EditItemTemplate.

    Le but est que, lorsque je valide l'édition d'une ligne de mon tableau , le champ concernant le mois de référence soit alimenté avec la valeur du champ de ma procédure stockée.

    Pour le moment, je n'arrive pas à charger la page d'édition de mon tableau : J'ai une erreur me disant que mon SelectedValue n'existe pas dans la liste des éléments.

    Si j'enlève le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectedValue='<%# Bind("syntec_date_id")%>'
    J'arrive à éditer mais le champ ne s'alimente plus.

    Je suis perdu sur ce point.
    Je vous remercie d'avance pour votre aide !

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    est ce que ta requete fonctionne deja sous SQL server ou pas.
    Peut etre as-tu une erreur la dedans

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Oui, la requête sous SQL est toute bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TOP 1	syntec_date_id ordr_ref_mnth_syntec,
    		mnth_lib,
    		syntec_id
    FROM lu_syntec
    inner join lu_mnth on mnth_id = syntec_date_id
    order by syntec_date_id desc
    La table lu_syntec ne contient qu'une liste de mois avec un id et une valeur.
    Lors de l'édition de la ligne, la valeur est bien récupérée.
    Par contre quand je veux valider/confirmer l'édition d'une ligne, la valeur du mois choisi (son id) n'est pas pris en compte.
    Du coup je vois ma ligne complète sans la prise en compte du mois...

    Il doit bien me manquer un petit "DataBind" dans ma page acsx.cs je suppose.
    Mais je ne saurais trouver où...

    Merci encore

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    Effectivement ca doit etre une histoire de DataBind.
    Peut etre faut'il faire une fonction qui permet de remplir cette DDL, mais d'abord voir á quel moment il perd les données.

    Utilise le débugger

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    Effectivement ca doit etre une histoire de DataBind.
    Peut etre faut'il faire une fonction qui permet de remplir cette DDL, mais d'abord voir á quel moment il perd les données.
    Bah la DDL est bien remplie car il m'affiche bien le contenu de la DDL.
    C'est la "SelectedValue" qui ne prend pas la valeur du mois choisi.
    Du moins c'est ce que je pense...
    Je n'ai pas de debugger sur la machine de test (je bosse sans projet, page par page... pas top n'est-ce pas ?).

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur logistique
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur logistique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Je viens d'avoir le même soucis sur des DropDownlist qui ne s'affiche pas lorsque dans ma base j'ai une valeur NULL.

    A priori, il suffirait de rajouter ces deux instances de codes !

    Dans les propriétés de ta DropDownList, tu y ajoutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppendDataBoundItems="True"
    et tu crées un item vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:ListItem Text="" value="" />
    Cela a résolu mon problème
    En espérant qu'il en sera de même pour toi !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Schprounseur Voir le message
    Salut,

    Je viens d'avoir le même soucis sur des DropDownlist qui ne s'affiche pas lorsque dans ma base j'ai une valeur NULL.

    A priori, il suffirait de rajouter ces deux instances de codes !

    Dans les propriétés de ta DropDownList, tu y ajoutes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppendDataBoundItems="True"
    et tu crées un item vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:ListItem Text="" value="" />
    Cela a résolu mon problème
    En espérant qu'il en sera de même pour toi !
    Merci mais ce n'est pas ça le problème.
    Ma page ascx, au moment de la validation de l'édition, ne récupère pas la valeur du mois que j'ai choisi dans la DropDownList.
    Du coup il ne l'insère pas dans la base et, du coup, je me retrouve avec ma ligne éditée et avec un champ vide...

    J'ai une autre idée, qui pourrait être le nom du champ mal renseigné dans le DataSource.
    Je vais voir et reviens vers vous si un problème survient.

    Merci encore.


    EDIT :
    Bon, c'est pas ça le problème.
    Quand j'exécute la procédure pour "updater" ma ligne directement depuis la base, ça marche NICKEL !

    Le seul problème vient donc bien du fait que ma valeur n'est pas récupérée par mon code depuis la DDL.

    Si quelqu'un savait m'expliquer comment bien faire cette récupération, ce serait génial.
    Merci d'avance !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Merci Schprounseur !!

    J'ai repensé à ta solution.
    Et je l'ai re-testée.
    en ajoutant un ListItem dans la DDL, ça ne fonctionnait pas.
    Du coup, en rajoutant une ligne avec les valeurs NULL directement dans la procédure qui va me chercher le contenu de la DDL : IT WORKED !!

    Merci encore pour ton apport.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/09/2014, 14h24
  2. Réponses: 1
    Dernier message: 03/03/2013, 16h09
  3. Réponses: 4
    Dernier message: 04/08/2010, 14h15
  4. Réponses: 6
    Dernier message: 08/08/2006, 11h57

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