2010-02-15 9 views
1

С NetVantage Windows Forms 9.1 UltraGrid я хочу добавить некоторые несвязанные столбцы, чтобы выполнить некоторые простые вычисления. В первый раз, когда этот код вводится в делегат InitializeLayout, он обнаруживает, что столбцы еще не существуют, а затем добавляет их. Удивительно, но когда я получаю новые данные, перепроверяю сетку, а затем снова вводим этот делегат, он все же находит, что эти столбцы не существуют, а затем пытается их добавить. Затем генерируется исключение: «Key уже существует».Как добавить несвязанные столбцы в Infragistics UltraGrid только один раз, не выбрасывая исключение?

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])"; 

ответ

6

Это был RTFM. Я должен был назвать другой метод:

Изменить

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

в

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

Проблема здесь Содержит проверки для объекта, а не ключом. Я проверял, содержит ли коллекции столбцов строковый объект. Существует возвращает true объекта с этим ключом в коллекции.