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 :

[Entity] Binder une ListView à un IQueryable<>


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut [Entity] Binder une ListView à un IQueryable<>
    Bonsoir,

    Je débute dans Linq, et pour parfaire le tableau j'ai choisi d'utiliser Entity.

    Le contexte est simple : j'ai une ComboBox remplie avec des objets "Entrepot", et je souhaite que lorsque l'on sélectionne l'un d'eux la source de la ListView soit modifiée afin d'afficher tous les produits en stock dans cet entrepot.

    Voilà à quoi ressemble mon code :
    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
    private void StackPanel_Loaded(object sender, RoutedEventArgs e)
    {
        IQueryable<Entrepot> listEntrepots = from ent in entities.Entrepot.Include("TypeEntrepot")
                                             orderby ent.NomEntrepot
                                             select ent;
        comboBoxEntrepots.ItemsSource = listEntrepots;
        if (comboBoxEntrepots.Items.Count > 0) comboBoxEntrepots.SelectedIndex = 0;
    }
     
    private void comboBoxEntrepots_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        IQueryable<Stock> queryStocks = from stock in entities.Stock.Include("Entrepot").Include("Produit")
                                        where stock.Entrepot == (comboBoxEntrepots.SelectedItem as Entrepot)
                                        select stock;
     
        foreach (Stock item in queryStocks)
            this._collectionStocks.Add(item);
     
        //this._collectionStocks = new ObservableCollection<Stock>(queryStocks.ToList());
        //this._viewStocks = (ListCollectionView)CollectionViewSource.GetDefaultView(this._collectionStocks);
        listViewStocks.ItemsSource = this._collectionStocks;
    }
    Mais quelque soit la manière dont je m'y prends j'ai toujours la même erreur :
    Impossible de créer une valeur constante de type « GestionStock_RdC_V2.UI.Stocks ». Seuls les types primitifs (« par exemple Int32, String et Guid ») sont pris en charge dans ce contexte.

    ...sur l'objet "queryStocks".

    Qu'est-ce qui n'est pas correct dans ma manière de binder?

    D'avance merci pour l'aide que vous pourrez m'apporter.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    C'est ta clause Where qui va pas:

    where stock.Entrepot == (comboBoxEntrepots.SelectedItem as Entrepot)
    T'as un identifiant sur ta classe Entrepot ? Faudrait que tu essaye ca:

    where stock.Entrepot.Id == (comboBoxEntrepots.SelectedItem as Entrepot).Id

  3. #3
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut
    Merci.

    Effectivement (et le message d'erreur était assez clair) Entity Framework ne peut comparer que des types primitifs.

    Plus d'infos ici et . Frustration est bien le mot qui convient, même si ça n'a heureusement pas de grosses conséquences.

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

Discussions similaires

  1. Binder un conteneur comme une listview
    Par NejNej dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 09/03/2011, 16h08
  2. Binder une listview avec une list<>
    Par chris81 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 14/10/2008, 08h48
  3. binder un combobox à l'intérieur d'une listview
    Par Melianos dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 20/02/2008, 10h03
  4. [C#] Surlignage d'un élement d'une ListView
    Par tontonplaisir dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/09/2004, 15h35
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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