随着NetVantage Windows窗体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] )";
有帮助吗?

解决方案

这是一个RTFM。我应该叫一个不同的方法,包括:

更改

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

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

这里的问题是的包含用于对象检查,而不是一个密钥。我检查,看看是否列集合包含一个字符串对象。的已存在与集合中返回与该键的对象的事实。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top