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 Forms Discussion :

[C#] DatagridView + ObservableCollection


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Points : 30
    Points
    30
    Par défaut [C#] DatagridView + ObservableCollection
    Bonjour,

    J'utilise un ObservableCollection pour être notifié des changements dans ma bdd (j'utilise Linq to SQL).

    J'ai déclaré la classe suivante :

    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
    public static class ObservableCollectionTools
        {
            public static ObservableCollection<TSource> ToObservableCollection<TSource>(this IEnumerable<TSource> source)
            {
                ObservableCollection<TSource> target = new ObservableCollection<TSource>();
     
                using (IEnumerator<TSource> enumerator = source.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        target.Add(enumerator.Current);
                    }
                }          
                return target;
            }
        }
    De plus, j'effectue un binding de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Charge la table dans la source des bindings
    mainBindingSource.DataSource = bdd.t_article.ToObservableCollection<t_article>();
     
    // Configure la navigation
    mainBindingNavigator.BindingSource = mainBindingSource;
     
    // Configure la grille de données sur la même source que la source de navigation
    mainDataGridView.DataSource = mainBindingNavigator.BindingSource;
    Ca fonctionne pas mal sauf que je n'ai plus accès au tri dans mon datagridview

    J'ai bien essayé d'ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Charge la table dans la source des bindings
    mainBindingSource.DataSource = bdd.t_article.ToObservableCollection<t_article>().ToList();
    Mais ça ne change rien ...
    Quelqu'un a une idée ?

    Merci de votre aide

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    sauf que je n'ai plus accès au tri dans mon datagridview
    Quellle technique de tri utilises-tu ?
    • tri "standard" en cliquant sur l'en-tête de colonne,
    • tri Multi-colonne,
    • tri spécial défini dans ton code,
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Si c'est du Silverlight, essaies une PagedCollectionView.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Graffito : j'utilise le tri "standard" en cliquant sur l'en-tête de colonne.
    Nathanael : c'est du Winform.

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Merci Graffito, ça marche très bien.
    Par contre, mon databinding ne fonctionne plus quand j'ajoute un nouvel enregistrement ...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Bon j'ai ajouté le code qui va bien pour gérer moi même les insert.
    Je clos ce topic et un grand merci aux interventants

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

Discussions similaires

  1. [c#] datagridview - trouver postion de la selection
    Par zeroox dans le forum Windows Forms
    Réponses: 7
    Dernier message: 15/04/2009, 12h48
  2. [VB.NET][DataGridView]:couleur de fond d'une cellule
    Par BigTicket42 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/05/2008, 22h07
  3. Probleme d'affichage avec un DataGridView
    Par kekesilo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/01/2007, 14h12
  4. [C#][DataGridView]Comment selectionner ligne sur Click Droit ?
    Par VincenzoR dans le forum Windows Forms
    Réponses: 12
    Dernier message: 23/12/2005, 22h34
  5. [VS2005][VB.Net] Custom Format dans un DataGridView
    Par Vonotar dans le forum VB.NET
    Réponses: 10
    Dernier message: 22/11/2005, 08h15

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