如何在不抛出异常的情况下,仅将未绑定列添加到Infragistics UltraGrid一次?

Bla*_*hor 1 infragistics ultrawingrid

使用NetVantage Windows Forms 9.1 UltraGrid,我想添加一些未绑定的列来进行一些简单的计算.第一次在InitializeLayout委托中输入此代码时,它会发现列尚不存在,然后添加它们.令人惊讶的是,当我获取新数据,重新绑定网格,然后再次输入此委托时,它仍然发现这些列不存在然后尝试添加它们.然后抛出异常,"Key已经存在."

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] )";
Run Code Online (Sandbox Code Playgroud)

Bla*_*hor 6

这是一个RTFM.我应该调用另一种方法:

更改

if (e.Layout.Bands[0].Columns.Contains("Change")) 
Run Code Online (Sandbox Code Playgroud)

if (e.Layout.Bands[0].Columns.Exists("Change")) 
Run Code Online (Sandbox Code Playgroud)

这里的问题是包含对象的检查,而不是密钥.我正在检查列集合是否包含字符串对象.Exists返回具有该键位于集合中的对象的true.