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#20][VS2005] Actualisation DataGridView


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut [C#20][VS2005] Actualisation DataGridView
    Bonjour,

    Je suis en train de faire un test avec un ArrayList (même si au final, je vais prendre une Collection générique List<T>).
    Je veux le lier à un DataGridView.
    L'ArrayList contient des objets de la même classe. On va dire que la classe est "Employé".

    Dans mon Form, j'ai juste un TextBox pour taper un "Nom", un bouton pour ajouter le "Nom" à ma liste, et le DataGridView dessous.

    Mon problème est que je ne comprends pas pourquoi le DataGridView n'est pas actualisé automatiquement alors que j'ai renseigné sa propriété DataSource en disant qu'elle est égale à mon ArrayList (fait au Load du Form).

    Le code donne :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public partial class Form1 : Form
        {
     
            BindingSource oBindingSource = new BindingSource();
            System.Collections.ArrayList MaListeEmployes;
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                MaListeEmployes = new ArrayList();
                mydgwListe.DataSource = MaListeEmployes;
     
            }
     
            private void mybtnAjouter_Click(object sender, EventArgs e)
            {
                if (this.mytbxNom.Text.Length != 0)
                {
                    MaListeEmployes.Add(new Employe(this.mytbxNom.Text));
     
     
                    //mydgwListe.DataSource = null;
                    //mydgwListe.DataSource = MaListeEmployes;
     
     
                }
            }
        }

    Par contre, si j'enlève les commentaires en bas, ça marche !

    Encore plus bizarre, si je laisse le premier commentaire, ça ne marche pas !
    Comme si le DataGridView ne voulait pas que l'on redéfinisse sa propriété DataSource. Il faut donc que je fasse DataSource = "" ou = null.

    Quelqu'un peut-il m'aider sur ce problème ?
    Merci d'avance.

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    La List<T> (ainsi qu'ArrayList) sont des conteneurs "de base". Ils n'émettent aucun événement pour notifier qu'un élément leur a été ajouté ou a été modifié. Ta DataGridView connaît sa source quand tu affectes sa propriété dataSource. Le comportement de la grille dépend de l'interface implémentée par cette source. Si c'est une IList / IList<T>, elle se contente de se remplir avec les données de la source au démarrage, mais ne peut pas se mettre à jour par la suite, par ce qu'un IList ne notifie pas de ses changements.

    Si tu veux qu'une modif de ta source soit directement visible sur ta grille, il faut que ce soit un type qui balance des événements à l'insertion / modif / suppression d'un de ses éléments. Et là, l'object magique, c'est... BindingList.

    Un petit tour dans la MSDN et tu sauras tout sur la BindingList

Discussions similaires

  1. [Débutant] [C#]: Actualiser DataGridView lors d'ajout un enregistrement dans la BD
    Par megibson dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/02/2014, 16h52
  2. [C#][VS2005]datagridview accéder au controle d'une cellule
    Par camilero dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/06/2006, 11h40
  3. Réponses: 9
    Dernier message: 09/05/2006, 10h52
  4. [C#][VS2005]Actualisation DataGridView
    Par caelum dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/04/2006, 11h41
  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