Meilleur auteur de réponses
Lier une liste à un DataGridView via un BindingSource

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
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- Marqué comme réponse Patrice ScribeMVP, Moderator mercredi 29 février 2012 17:41
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- Marqué comme réponse Patrice ScribeMVP, Moderator mercredi 29 février 2012 17:41
-