2010-02-15 3 views
1

NetVantage Windows Forms 9.1 UltraGrid에서 몇 가지 간단한 계산을 수행하기 위해 언 바운드 열을 추가하고 싶습니다. 이 코드가 InitializeLayout 대리자에 처음 입력되면 열이 아직 존재하지 않는다고 확인한 다음 추가합니다. 현저하게, 새로운 데이터를 얻었을 때, 그리드를 재 바인드 한 다음이 델리게이트를 다시 입력하면, 여전히 이러한 컬럼이 존재하지 않는다는 것을 알게되고 추가하려고 시도합니다. 그런 다음 예외가 throw됩니다. "키가 이미 있습니다."예외를 throw하지 않고 언 바운드 열을 Infragistics UltraGrid에 한 번만 추가하는 방법은 무엇입니까?

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])"; 

답변

6

이것은 RTFM입니다. 문제는 여기 객체가 아닌 키 검사를 포함합니다

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

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

변경 : 나는 다른 방법이라고해야합니다. 열 컬렉션에 문자열 객체가 포함되어 있는지 확인했습니다. 존재 함은 해당 키를 가진 개체가 컬렉션에있는 경우 true를 반환합니다.