none
Lier une liste à un DataGridView via un BindingSource RRS feed

  • Question

  • Bonjour,

    Je tente de lier une liste d'objet à un DataGridView en passant par un BindingSource afin que lorsque je supprime/ajoute/modifie des éléments dans ma liste, cela soit automatiquement répercuté sur le DataGridView.

    J'ai donc codé ceci à l'initialisation de ma Form (basé sur ce code là (msdn)

            public SensorForm()
            {
                InitializeComponent();
                Global.ListSensors = new List<SensorNode>();
                Global.ListRouters = new List<RouterNode>();
    
                Global.BSSensors = new BindingSource();
                Global.BSRouters = new BindingSource();
    
                Global.BSSensors.DataSource = Global.ListSensors;
                Global.BSRouters.DataSource = Global.ListRouters;
    
                dataGridViewSensor.AutoGenerateColumns = false;
                dataGridViewRouter.AutoGenerateColumns = false;
    
                dataGridViewSensor.DataSource = Global.BSSensors;
                dataGridViewRouter.DataSource = Global.BSRouters;
    
            }

    Or lorsque j'ajoute des éléments dans la liste, rien ne se passe dans le dataGridView. Sauriez vous pourquoi ? j'ai du oublié de modifier un paramètre, mais je n'ai pas trouvé ma réponse sur le site msdn.

    Merci,

    Vincent


    • Modifié vincentp35 mercredi 29 février 2012 17:13
    mercredi 29 février 2012 17:11

Réponses

  • Bonjour,

    Vous devez utiliser une BindingList<T> pour que lors de l'ajout/modification/suppression d'élément dans la liste, le moteur de DataBinding soit notifié.

    Global.ListSensors = new BindingList<SensorNode>();
    Global.ListRouters = new BindingList<RouterNode>();
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 29 février 2012 17:19
    Modérateur

Toutes les réponses

  • Bonjour,

    Vous devez utiliser une BindingList<T> pour que lors de l'ajout/modification/suppression d'élément dans la liste, le moteur de DataBinding soit notifié.

    Global.ListSensors = new BindingList<SensorNode>();
    Global.ListRouters = new BindingList<RouterNode>();
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 29 février 2012 17:19
    Modérateur
  • Merci pour cette réponse encore une fois claire et précise ! Cela marche tout à fait.
    mercredi 29 février 2012 17:24