Come faccio ad aggiungere colonne non associate a un Infragistics UltraGrid solo una volta, senza un'eccezione?

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

Domanda

Con la NetVantage Windows Forms 9.1 UltraGrid, voglio aggiungere alcune colonne non associate per fare alcuni semplici calcoli. La prima volta che questo codice viene inserito nel delegato InitializeLayout, constata che le colonne non esistono ancora e poi aggiunge. Sorprendentemente, quando ricevo nuovi dati, associare nuovamente la griglia, e quindi immettere questo delegato ancora una volta, si trova ancora che non esistono queste colonne e poi cerca di aggiungerli. Un'eccezione viene poi gettato, "Chiave già esistente".

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] )";
È stato utile?

Soluzione

Questa è stata una RTFM. Ho dovuto chiamare un metodo diverso:

Cambia

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

a

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

Il problema qui è contiene verifica la presenza di un oggetto, non una chiave. Stavo controllando per vedere se le collezioni colonne contiene un oggetto stringa. Esiste restituisce true di un oggetto con quella chiave è nella collezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top