¿Cómo se añaden columnas no unidos a un Infragistics UltraGrid una sola vez sin lanzar una excepción?

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

Pregunta

Con la NetVantage Windows Forms 9.1 UltraGrid, quiero añadir algunas columnas no unidos a hacer algunos cálculos sencillos. La primera vez que este código se introduce en el delegado InitializeLayout, se encuentra que las columnas no existen todavía y luego los agrega. Sorprendentemente, cuando consigo nuevos datos, volver a enlazar la red, y luego entrar en este nuevo delegado, todavía encuentra que no existen estas columnas y luego trata de añadirlos. se produce una excepción a continuación, "clave ya 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] )";
¿Fue útil?

Solución

Este fue un RTFM. Debería haber llamado un método diferente:

Cambiar

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

a

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

El problema aquí es contiene comprueba si el objeto, no una clave. Estaba revisando para ver si las colecciones de columnas contiene un objeto de cadena. Existe devuelve verdadero de un objeto con esa clave está en la colección.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top