Comment définir dynamiquement quelles propriétés sont liées à un DataGridView?
-
03-07-2019 - |
Question
Mon DataGridView doit prendre en charge un certain nombre de types et ces types peuvent avoir un nombre quelconque de propriétés publiques, que je ne souhaite pas toutes afficher.
Quelqu'un peut-il suggérer un moyen de personnaliser dynamiquement les colonnes d'un DataGridView lors de la liaison d'une classe à une source de données? Un attribut indique-t-il à un contrôle s'il doit utiliser une propriété comme colonne, par exemple?
Conseils appréciés.
La solution
Par défaut (avec la génération automatique de colonnes activée), il obtiendra simplement (via ComponentModel) les propriétés [Browsable (true)]
(ou celles qui omettent cet attribut).
S'il s'agit de la seule utilisation de la liaison pour ces données, vous pouvez ajouter [Browsable (false)]
aux propriétés que vous ne souhaitez pas afficher. Notez que cela empêchera également les liaisons de données régulières ( TextBox
, PropertyGrid
, etc.) avec ces propriétés.
En réalité, je pense qu'il serait préférable de créer votre propre attribut et de l'utiliser pour rechercher les propriétés que vous souhaitez afficher par réflexion (et créer vous-même les colonnes).