2009-07-31 6 views
0

J'ai une collection personnalisée disonsComment masquer une propriété de collection personnalisée lors de l'utilisation de DataGridView DataSource?

MyClass 
{ 
    prop Name; 
    prop Address; 
    prop isRequired; 
} 


MyCustomCollection : List<MyClass> 
{ 

} 

Quand je

MyCustomCollection collection = new MyCustomCollection(); 
datagridView.DataSource = collection; 

Le datagridview est peuplé de trois colonnes Nom, adresse, isRequired ..

Je veux cacher des biens isRequired à partir de la vue de grille de données comment puis-je faire cela ...

et aussi je veux l'utiliser comme une propriété pour vérifier dans d'autres classes ...

Répondre

0

Vous pouvez également définir la propriété visible de la colonne sur false. Pour chaque ensemble de données métier que je souhaite afficher, je garde une trace du nombre de colonnes les plus à gauche que je veux masquer car elles contiennent des valeurs PK. Voici un échantillon:

 dgvDisplaySet.DataSource = _setSource 
    gridColsToHide = _displaySet.hidePKFields 
    For gridCol = 0 To dgvDisplaySet.Columns.Count - 1 
     dgvDisplaySet.Columns(gridCol).Visible = (gridCol >= gridColsToHide) 
    Next 
2

J'utilisé [Browsable (false)]

MyClass {
Nom prop; prop Adresse; [Browsable (false)] prop isRequired; } pour masquer la colonne

1

l'attribut Browsable est en effet une bonne option. Vous pouvez également définir AutoGenerateColumns sur false et créer les colonnes manuellement ...

+0

Merci pour votre suggestion une autre option Thomas. Thomas, est-ce qu'il y a un moyen pour que je puisse lire des lignes particulières seulement? Si supposé je veux faire que ces rangées lisent seulement dont la propriété IsRequired est fausse dans MyClass –

+0

Il y a un moyen de faire ceci, en manipulant l'événement CellBeginEdit. Dans le gestionnaire, vous vérifiez si la ligne peut être modifiée et annulez l'événement (e.Annuler = true) s'il ne peut pas –

Questions connexes