Pergunta

Com o Netvantage Windows Forms 9.1 UltraGrid, quero adicionar algumas colunas não ligadas para fazer alguns cálculos simples. Na primeira vez em que este código é inserido no delegado inicializeLayout, descobre que as colunas ainda não existem e depois as adicionam. Surpreendentemente, quando recebo novos dados, rebento a grade e, em seguida, digito esse delegado novamente, ainda descobre que essas colunas não existem e depois tenta adicioná -las. Uma exceção é então lançada: "Key já existe".

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] )";
Foi útil?

Solução

Este foi um RTFM. Eu deveria ter chamado de método diferente:

Mudar

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

para

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

O problema aqui é Contém Verifica um objeto, não uma chave. Eu estava verificando se as coleções de colunas contêm um objeto de string. Existe Retorna verdadeira de um objeto com essa chave está na coleção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top