예외를 던지지 않고 Unbragistics UltraGrid에 Unbound 열을 한 번만 추가하려면 어떻게합니까?

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

문제

Netvantage Windows Forms 9.1 UltraGrid를 사용하면 간단한 계산을 수행하기 위해 몇 가지 언 바운드 열을 추가하고 싶습니다. 이 코드가 Initializelayout Delegate에 처음으로 입력되면 열이 아직 존재하지 않는다는 것을 알게 된 다음 추가합니다. 놀랍게도, 새 데이터를 얻을 때 그리드를 다시 반드 한 다음이 대의원을 다시 입력하면 여전히이 열이 존재하지 않는다는 것을 알게 된 다음 추가하려고합니다. 그런 다음 "키가 이미 존재합니다."예외가 발생합니다.

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