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 :

problème de bindings avec DropDownList


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut problème de bindings avec DropDownList
    J'ai une table SQL avec les champs CategoryID, UserID, Name

    J'ai un GridViews et dans ce GV j'ai un TemplateField DropDownList.

    Pour le EditItemTemplate tout va bien. L'accès à ma table sql va super bien.
    Mais pour ItemTemplate ça ne marche pas du tout. Pourtant c'est quasiment identique que le code du EditItemTemplate à l'exception du Enable qui est False.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    asp:DropDownList ID="pictureReadOnlyCategories" runat="server" DataSourceID="SqlDataSource1"
                            DataTextField="Name" DataValueField="CategoryID"
                            Style="position: static" Enabled="False" SelectedValue='<%# Bind("CategoryID") %>'>
    </asp:DropDownList>
    J'ai l'erreur suivante:

    'pictureReadOnlyCategories' a un SelectedValue qui n'est pas valide, car il n'existe pas dans la liste des éléments.
    Nom du paramètre : value

    Sur le net j'ai vu quelques personne qui ont le même problème, mais personne ne semble avoir trouvé la cause.

    Je comprend pas pourquoi le DropDownList du ItemTemplate n'arrive pas a communiquer avec SelectedValue.

    Avez vous une idée sur cette question ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Je pense avoir découvert mon problème. Je vais y travailler. Désoler de vous avoir déranger

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Bonjour,
    SVP si vous avez trouvé le problème, décrivez le pour que tout le monde en profite.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Oui je comprend. Mais pour ma part je ne l'ai pas trouvé, c'est juste que je crois être sur une fausse piste pour le résoudre. En fait j'ai deux tables, une Categories qui a les champs suivant. CategoryID(PK), UserID, Name. La table Pictures possede plusieurs champs donc CategoryID(SK).

    J'ai un GridView, elle affiche la table Pictures. C'est dans cette affichage que j'ai un problème. Pour Editer Pictures.CategoryID j'utilise un DropDownList lié à la table Categories pour que l'utilisateur puisse faire un choix disponible.

    Mon problème c'est que j'aimerais afficher dans mon GridView Categories.Name selon la valeur de Pictures.CategoryID, et c'est la que mon manque de connaissance me fait cruellement défaut. Je me débat depuis 2 jours avec ce problème en utilisant la méthode essais-erreur.

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Bonsoir,
    Je crois que c'est impossible d'afficher une information qui n'existe pas dans ta table. En effet, étant donné que la table Picture ne contient que le champ CategorieID (FK) sans le nom de cette catégorie qui se trouve dans une autre table. Le GridView n'affiche que les champs de la table à laquelle il est lié. Pour pouvoir afficher le nom à la place du ID, il faut créer une vue qui joint les deux tables (Picture et Categorie) dont les champs sont ceux de la table Picture plus CategorieNom.
    Comme ça je crois que tu reglera le problème.

    Je crois que je me suis mal exprimé , mais pour résumer je dirai :
    La raison pour laquelle ça marche pour EditItemTemplate c'est que la ligne est en mode édition, ce qui fait que tous les champs sont éditable et modifiable, cela permet d'afficher des informations venant de plusieurs tables.

    mais pour le ItemTemplate, c'est un simple affichage du contenu de la table, donc impossible d'afficher des informations venant en dehors de la table en question.

    enfin, je crois que c'est ça.
    salut

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Disons que j'aurais les donnés suivante dans ma table Categories.

    CategoryID(PK) UserID Name
    1 5 Famille
    2 6 Amis

    Et dans ma table Picture j'aurais ceci

    PictureID(PK) CategoryID(FK) Commentaire
    1 2 Super fête!


    Dans un GridView j'ai la table Picture que je peux éditer. Pour ce qui est de Picture.CategoryID c'est un DropDownList car le choix doit être sois null ou soit un choix existant de Categories. J'arrive à afficher la donné 2 de Picture.CategoryeID, mais j'aimerais que ca sois plus simple pour l'utilisateur et afficher ce qui correspond au 2, sois le mot Amis. En gros c'est ca mon problème. Je sais pas si ca peux vous aidé à m'aidé hehehe


  7. #7
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Je n'arrive pas à comprendre ou se situe réellement le problème.
    Ce que je sais, c'est qu'un GridView ne peut pas afficher des informations venant de plusieurs tables.
    Pour votre cas, vous avez une table Picture qui contient les champs :
    PictureID (PK) , CatégorieID (FK) , commentaire.

    Vous à la place de CatégorieID, vous voulez afficher CategorieName qui se trouve dans la table Categorie (donc dans une autre table). hors, le gridview est lié à la table Picture, donc impossible d'afficher le Name à la place de ID.

    la solution est de créer une vue :
    Select Picture.PictureID, Picture.Commentaire, Categorie.Name
    from Picture, Categorie
    where Picture.CategorieID = Categorie.CategorieID

    apré, vous liez le GridView à cette vue.

    J'espère sincèrement que ça regle votre problème.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Ma table Pictures contient exactement ceci:

    PictureID(PK) UserID(FK) CategoryID(FK) Title Description UploadedOn

    Ma table Categories ceci:

    CategoryID(PK) UserID(FK) Name


  9. #9
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Bonsoir
    Je vais vous redire ce que j'ai dis. Dans le EditItemTemplate, ce que vous voulais faire marche trés bien car votre fenetre accepte les modifications.
    Par contre dans le ItemTemplate, cela est impossible, à moins de passer par une vue (une autre table qui contient tout les champs que vous voulez afficher) car le ItemTemplate n'affiche que les colonnes de la table consernée.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Je comprend. Je vais faire avec dans ce cas

  11. #11
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Je m'excuse si je me suis mal comporté.
    je ne voulais pas vous vexez
    et bon curage

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 102
    Points
    102
    Par défaut
    Je profite de ce topic pour vous posez une question bête :

    j'ai moi aussi une DropDownList dans un GridView, et je voulais savoir la synthaxe pour récuperer la valeur de la DropDownList d'une ligne du DataGrid

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    nkonito vous ne m'avez pas vexé du tout, bien au contraire. Vous avez pris la peine de me répondre et j'apprécie énormément

  14. #14
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    Ouff.
    Merci beaucoup Vlatiska

  15. #15
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 194
    Points : 158
    Points
    158
    Par défaut
    pour récuperer une valeur tu fais:
    DropDownList DDL = (DropDownList )GridView.Rows[i].FindControl("ID de DDL Inserée dans le GridView");

    ensuite

    string var = DDL.SelectedValue;

Discussions similaires

  1. Problème de binding avec IsSynchronizedWithCurrentItem
    Par leSeb dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 28/10/2009, 12h14
  2. problème de binding avec un controle utilisateur
    Par EmacLi dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 06/10/2009, 21h17
  3. C# Net - Problème de Binding avec DataSet
    Par Anified dans le forum C#
    Réponses: 0
    Dernier message: 21/09/2009, 02h00
  4. Problème de Binding avec un formulaire
    Par vilveq dans le forum Flex
    Réponses: 7
    Dernier message: 06/08/2009, 11h03
  5. Problème de Binding avec un UserControl
    Par birdyz dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 20/02/2009, 12h31

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