Infragistics 2009 1 권을 사용하고 있습니다.UltraGrid의 GroupBy 새로 고침 ListChanged 일 때 하위 밴드 정렬?
My UltraGrid는 비즈니스 개체 "B"의 BindingList 속성을 가진 비즈니스 개체 "B"의 BindingList에 바인딩됩니다. 그것은 두 개의 밴드를 가지게됩니다 : 하나는 "BindingList`1", 다른 하나는 "ListOfB"입니다. 통화 관리자 덕분입니다.
하위 Business Object W INotifyPropertyChange를 통해 하위 대역에서 변경이 수행 될 때마다 격자의 GroupBy 정렬을 새로 고치려합니다.
void Grid_ListChanged(object sender, ListChangedEventArgs e)
{
if (e.ListChangedType == ListChangedType.ItemChanged)
{
string columnKey = e.PropertyDescriptor.Name;
if (e.PropertyDescriptor.PropertyType.Name == "BindingList`1")
{
ultraGrid.DisplayLayout.Bands[columnKey].SortedColumns.RefreshSort(true);
}
else
{
UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
UltraGridColumn gc = band.Columns[columnKey];
if (gc.IsGroupByColumn || gc.SortIndicator != SortIndicator.None)
{
band.SortedColumns.RefreshSort(true);
}
ColumnFilter cf = band.ColumnFilters[columnKey];
if (cf.FilterConditions.Count > 0)
{
ultraGrid.DisplayLayout.RefreshFilters();
}
}
}
}
밴드 :
부울는 아이 밴드의 속성에 의해 I 그룹 (의는 "활성"라고하자) 내가 이벤트에 가입 한 경우이 이벤트 핸들러와는 바인딩 데이터 소스에의 ListChanged (참) .SortedColumns.RefreshSort가 호출되지만 활성이 건물은 아이 대역에서 변경 될 때 그것은 GROUPBY 지역에서 예측할 수없는 결과를 제공합니다 :
-
: 세 가지 활성 성분 중 하나의 객체가 비활성화
- 활성 : 트루 (3 개 항목)
경우가에서 간다
사람 :
- 활동 : 거짓 (3 개 항목)
대신에 내가 열을 다시 끌 때의 경우이다 (와 지역별 그룹으로)
활성 : 거짓 (1 항목)
활동 : 트루 (2 개 항목)
내가 뭔가 잘못하고 있습니까?
RefreshSort (true)를 수행 할 때 행의 확장 된 상태를 복원하는 방법이 있습니까? ?