Как добавить несвязанные столбцы в Infragistics UltraGrid только один раз, не создавая исключения?

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

Вопрос

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

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] )";
Это было полезно?

Решение

Это был РТФМ.Мне следовало вызвать другой метод:

Изменять

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

к

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top