2010-04-18 3 views
1

J'ai un GridView avec 10 colonnes. Sous certaines conditions, je souhaite ajouter une nouvelle colonne appelée "Date d'expiration". Le problème est que lorsque l'utilisateur appuie de nouveau sur "Rechercher" (Postback), la colonne est à nouveau ajoutée.
je vérifie avant d'ajouter la colonne, pour voir si elle existe déjà:C# Gridview - Vérifier si une colonne existe déjà lors de l'ajout d'une nouvelle colonne échoue

BoundField dtExp = new BoundField 
          {DataField = "DateTimeExpired", HeaderText = "Expiration Date", DataFormatString = "{0:d}"}; 
if (!grid.Columns.Contains(dtExp)){grid.Columns.Add(dtExp);} 

Mais le problème est que même si la colonne existe déjà, « Contient » retourne false.
Qu'est-ce que je fais de mal?

Merci!

Répondre

3

Il vérifie si la grille contient votre nouvelle colonne (ce qui n'est évidemment pas le cas, vous ne l'avez pas encore ajouté); vous voulez réellement vérifier s'il contient une colonne différente avec le même nom. Peut-être juste boucle sur le Columns, en vérifiant un avec DataField == "DateTimeExpired".

+0

Merci, cela fonctionne - mais pas là un plus « construit » solution pour cela? – Nir

+0

@Nir; Nan. Généralement, les colonnes ne sont ajoutées qu'une seule fois, ce qui ne pose aucun problème et ne nécessite pas de code supplémentaire. –

+0

Ok, merci beaucoup, Marc. – Nir

4

Vous pouvez lancer Columns dactylographié IEnumerable <> et utiliser LINQ pour vérifier que les colonnes existe:

var gridBoundColumns = Grid1.Columns.OfType<BoundField>(); 
if(gridBoundColumns.Any(bf => bf.DataField.Equals(searchColumn.Name)) == false) 
{ 
    Grid1.Columns.Add(new BoundField{ ... }); 
} 
Questions connexes