2009-03-12 12 views
15

WinForms 사용자 정의 컨트롤에 UltraGrid를 넣었습니다. 그리드를 읽기 전용 다중 행 선택 테이블로 사용할 수 있도록 일부 설정을 수정했습니다. 하지만 한 가지 문제가 있습니다. 기본적으로 첫 번째 행이 선택되어있는 것 같습니다.Infragistics UltraGrid : 첫 행의 기본 선택을 제거하는 방법

그러나 Selected.Rows 속성은 비어 있으며 ActiveRow 속성은 null입니다.

그래서 행이 선택되어있는 것처럼 보이지만 실제로는 그렇지 않으므로 선택 영역을 제거 할 수 없습니다.

이 동작을 제어하려면 UltraGrid의 어딘가에 숨겨진 설정이 있어야합니다. 그리고 이것이 사실이 아니라면 해결 방법이있을 수 있습니까?

감사합니다.

답변

21
나는 여러분 모두와 함께 공유 할 솔루션, 발견 좀 더 연구 한 후

: 나는 exactely 당신이했던 동일한 문제가

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset(); 
+0

나를 위해 일하지 않았거나 Gianni. 그리고 Gianni의 접근 방식은 ListObject 데이터를 날려 버립니다. 왜 효과가 없을지 모르는 도움을 드릴 수 있습니까? 기본 속성으로 간단한 표를 가져 와서 바인딩 한 다음 추천 된 2 줄을 작성했습니다. 변경 없음. – ChadD

+0

이것은 나를 위해 일했습니다. 비슷한 문제가있는 사용자에게는 행에 부여 할 수있는 두 가지 속성 ('선택됨'및 '활성')이 있음을 명심하십시오. 0 개 이상의 행이 선택 될 수 있지만 단 하나의 행만 활성입니다. 안타깝게도 Selected 행과 Active 행은 기본적으로 동일한 방식으로 강조 표시됩니다. 활성 행은 행 머리글에 삼각형으로 표시됩니다 (행 머리글이 활성화 된 경우). ActiveRowAppearance.Reset() 호출은 UltraGrid가 활성 행을 강조 표시하지 않도록 지시합니다. 희망이 도움이됩니다. – AlfredBr

3

을하지만 게리 Schenck의 솔루션은 나를 위해 작동하지 않습니다 . 이 트릭을 사용했습니다 : MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

그러면 행 0에 대한 ListObject 데이터가 삭제됩니다. – ChadD

1

어쨌든 위에 나열된 해결책 중 어느 것도 나를 위해 일하지 않았습니다. 제 경우에는 단순히 활성화/선택이 전혀 일어나지 않기를 바랬습니다. 그래서 나는 다음과 같이했다. 그것은 최상의 해결책은 아니지만 작동합니다.

private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e) 
    { 
     LayoutVisulizerUltraGrid.ActiveRow = null; 
    } 
3

이 시도 : 당신은 또한 행을 표시하지 않으려면

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

:

this.ultraGrid1.SyncWithCurrencyManager = false; 
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False; 
+1

감사합니다. 이것은 나를 미치게했다. – Keith

+0

고마워, 와우,이게 너무 애매하다. – Mangist

3

이 그리드의 "활성 모양"억제에 절 도와 줬어요 선택한대로 '선택한 모양'에 대해 동일한 작업을 수행해야합니다.

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 
0

선택한 행을 모두 비활성화 한 다음 ActiveRow을 null로 설정하면 선택을 취소해야합니다.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None; 
2

선택 및 활성을 구분하는 것이 중요합니다. 그리드는 어떤 행도 자동으로 선택하지 않습니다. 당신이보고있는 것은 선택된 행처럼 하이라이트로 표시되는 ActiveRow입니다.

그리드의 ActiveRow가 CurrencyManager와 동기화되므로 기본적으로 그리드의 첫 번째 행이 강조 표시됩니다. ActiveRowAppearance 및 ActiveCellAppearance를 재설정하면 ActiveRow에서 기본 강조 표시가 제거됩니다.

 this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
     this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset(); 

그러나이 활성 행되는 것을 행을 방지하지 않습니다하는 것이 중요합니다, 그냥 그리드는 더 이상 활성 행을 강조 없다. 행이 여전히 활성 상태이므로 (이를 막을 수있는 방법이 없습니다) 활성 행을 강조 표시하는 다른 행은 여전히 ​​행을 강조 표시합니다. 예를 들어, 스타일 라이브러리 (* .isl) 파일을 ActiveRow에 스타일을 적용하는 응용 프로그램에로드하면 여전히 표시됩니다.완전히 모든 속성 설정 및 스타일 라이브러리 설정을 무시하고,보다 철저한 방법으로 활성 행 모양을 사용하지 않으려면

, 당신은이 작업을 수행 할 수 있습니다 :이 속성이 V9에 추가 된

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

참고. 2 이전 버전에는 존재하지 않습니다.

관련 문제