Comment ajouter des colonnes non liées à un UltraGrid Infragistics une seule fois, sans lancer une exception?
-
20-09-2019 - |
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] )";
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.