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

Windows Presentation Foundation Discussion :

Databinding ListBox un Item en plus


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut Databinding ListBox un Item en plus
    Salut à tous
    J'ai un DataSet avec trois Tables : Auteur,LivreListe1,LivreListe2
    Ma table Master est : Auteur
    Mes deux tables Details : LivreListe1 et LivreListe2
    J'utilise deux DataGrid et une ListBox.

    DataGrid1 : pour afficher Table Auteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path =Auteur }"
    DataGrid2 : pour afficher Table LivreListe1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path =Auteur/Auteur_LivreListe1 }"
    ListBox : pour afficher Table LivreListe2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path =Auteur/Auteur_LivreListe2 }"
    OK sa marche : les deux Datagrid affichent en bas une ligne en plus, la listBox affiche exactement le nombre d'item réel.

    Mais si je "Bind" ma ListBox à LivreListe1 en modifiant dans le bath le nom de la relation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ItemsSource="{Binding Path =Auteur/Auteur_LivreListe1 }"
    Alors ma ListBox m'affiche un item en plus (vide) ? et fait exactement comme les deux DataGrid qui affichent toujours une ligne vide en bas (un item en plus)

    Mais si j'élimine le Binding de DataGrid2 , autrement dis ma Table LivreListe1 n'est liée qu'à la ListBox et bien là ma liste n'affiche aucun item en plus ??

    comment sa se fait un BUG ???

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Une hypothèse qui vaut ce qu'elle vaut :
    peut-être que la DataGrid ajoute un item dans la collection bindée, item qui correspond à la dernière ligne.
    Cet item se retrouve donc également dans la ListBox puisqu'elle est bindée à la même collection.

    Mais c'est vrai que ça parait un peu invraisemblable que la DataGrid ajoute un item vide, même si l'utilisateur n'a pas encore édité de propriété via la DataGrid.
    C'est peut-être une "feature by design" de plus.

    Si quelqu'un pouvait confirmer/infirmer ces propos...
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    en mettant un point d'arrêt j'ai vu que la TABLE ainsi que la vue (collectionView) ont le 'Count' qu'il faut c-a-d pas de modification

  4. #4
    Membre habitué Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 183
    Points
    183
    Par défaut
    Bonjour,

    juste une idée comme ça, tu as essayé de mettre la propriété CanUserAddRows = false dans ton DataGrid ? ça me fait penser à ça cette ligne en trop.

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    Merci Thrud

    effectivement la propriété CanUserAddRows = false élimine la ligne en plus dan le datagrid et dans la listebox , mais dans ce cas une question sur le fonctionnement de la datagrid : ma listbox est bindée à quoi ?
    et comment éliminer la ligne de ma listbox?

  6. #6
    Membre habitué Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 183
    Points
    183
    Par défaut
    Désolé, je n'en sais pas plus, il faudrait aller jeter un coup d'oeil dans le code du DataGrid pour voir ce qu'il fait avec son ItemsSource quand le CanUserAddRows est à true.

Discussions similaires

  1. Listbox et items.refresh()
    Par Tanou dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 15/02/2010, 09h40
  2. Databinding listbox et propertygrid
    Par Papy214 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/04/2008, 17h14
  3. Listbox get item sélectionné
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 18/06/2007, 22h05
  4. connaitre l'item le plus grand d'un champs d'une table
    Par celiaaa dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/05/2007, 22h23
  5. Drag & Drop entre 2 listBox : transfert items
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/01/2006, 10h56

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