Comment ajouter des colonnes non liées à un UltraGrid Infragistics une seule fois, sans lancer une exception?

StackOverflow https://stackoverflow.com/questions/2267401

Question

Avec le NetVantage Windows Forms 9.1 UltraGrid, je veux ajouter quelques colonnes non liées à faire quelques calculs simples. La première fois que ce code est entré dans le délégué InitializeLayout, il constate que les colonnes ne sont pas encore réunies et les ajoute. Etonnamment, quand je reçois de nouvelles données, rebind la grille, puis entrez à nouveau ce délégué, il trouve encore que ces colonnes n'existent pas et essaie ensuite de les ajouter. Une exception est alors levée, « clé existe déjà. »

UltraGridColumn changeColumn, pctChgCol;

if (e.Layout.Bands[0].Columns.Contains("Change"))
{
    changeColumn = e.Layout.Bands[0].Columns["Change"];
    pctChgCol = e.Layout.Bands[0].Columns["Percent Change"];
}
else
{
    changeColumn = e.Layout.Bands[0].Columns.Add("Change");
    pctChgCol = e.Layout.Bands[0].Columns.Add("Percent Change");
}
changeColumn.Formula = "[Publish Price] - [Override Price]";
pctChgCol.Formula = "if(0=[Publish Price] , 0 , ([Publish Price] - [Override Price])/[Publish Price] )";
Était-ce utile?

La solution

Ce fut un RTFM. Je aurais dû appeler une autre méthode:

Modifier

if (e.Layout.Bands[0].Columns.Contains("Change")) 

à

if (e.Layout.Bands[0].Columns.Exists("Change")) 

Le problème est ici Contient des contrôles pour un objet, pas une clé. Je vérifiais pour voir si les collections de colonnes contient un objet chaîne. existe renvoie vrai d'un objet avec cette clé est dans la collection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top