Maison >développement back-end >C++ >Comment garder un DataGridView à jour lors de la liaison à une liste dynamique ?

Comment garder un DataGridView à jour lors de la liaison à une liste dynamique ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 16:10:44565parcourir

How to Keep a DataGridView Updated When Binding to a Dynamic List?

Comment afficher une liste de liaisons mise à jour dynamiquement dans DataGridView

Introduction

Liaison d'une liste< T> vers un DataGridView peut être un moyen pratique d’afficher des données dynamiques. Cependant, la mise à jour de la liste peut ne pas toujours refléter les modifications apportées à DataGridView sans liaison explicite.

Problème

Considérez un scénario avec une liste contenant deux éléments ("Joe Black" et "Misha Kozlov"). Lorsqu'ils sont liés au DataGridView, ces éléments sont affichés. Cependant, l'ajout de nouveaux éléments à la liste ne met pas à jour le contenu de la grille.

Solution

Utilisation d'une BindingList

Le DataGridView ne maintient pas de connexion directe à une liste. Utilisez plutôt une BindingList, qui implémente IBindingList et informe la grille des modifications.

var list = new BindingList<Person>(persons);
myGrid.DataSource = list;

Utilisation d'une BindingSource

Pour un contrôle plus granulaire, envisagez d'utiliser a BindingSource :

var list = new List<Person>()
{
    new Person { Name = "Joe" },
    new Person { Name = "Misha" },
};
var bindingList = new BindingList<Person>(list);
var source = new BindingSource(bindingList, null);
grid.DataSource = source;

Le BindingSource offre une flexibilité pour les données manipulation et liaison de plusieurs sources de données. Les modifications apportées aux données sous-jacentes sont propagées à la grille sans liaison explicite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn