에 SortIndicator을 변경할 수 없다는되는 예외를 가지고있다. 일단 데이터가 정렬되면 밴드 내에서 순서가 재정렬됩니다. 당신은 아래의 코드를 적용하여 직접 볼 수 있습니다
Infragistics.Win.UltraWinGrid.UltraGridColumn[] oldSort;
private void Sort() {
ultraGrid1.BeforeSortChange += new Infragistics.Win.UltraWinGrid.BeforeSortChangeEventHandler(ultraGrid1_BeforeSortChange);
ultraGrid1.AfterSortChange += new Infragistics.Win.UltraWinGrid.BandEventHandler(ultraGrid1_AfterSortChange);
}
void ultraGrid1_BeforeSortChange(object sender, Infragistics.Win.UltraWinGrid.BeforeSortChangeEventArgs e) {
oldSort = new Infragistics.Win.UltraWinGrid.UltraGridColumn[e.Band.SortedColumns.Count];
e.Band.SortedColumns.CopyTo(oldSort, 0);
}
void ultraGrid1_AfterSortChange(object sender, Infragistics.Win.UltraWinGrid.BandEventArgs e) {
for (int i = 0; i < oldSort.Length; i++) {
for (int j = 0; j < e.Band.SortedColumns.Count; j++) {
Infragistics.Win.UltraWinGrid.UltraGridColumn column = e.Band.SortedColumns[j];
if (column.Key == oldSort[i].Key) {
if (column.SortIndicator == Infragistics.Win.UltraWinGrid.SortIndicator.Ascending) {
//column.SortIndicator = Infragistics.Win.UltraWinGrid.SortIndicator.None;
e.Band.SortedColumns.Remove(column.Key);
j--;
break;
}
}
}
}
}
내 생각 엔 당신이 정렬이 제거되면 밴드 내에서 행을 그것의 행 인덱스와 별도의 배열을 유지하고, 순서를 필요에 따라 것입니다 배열에. 하지만 그것은 내 의견으로는 기억력이 될 수 있습니다.
또 다른 접근법은 단순한 for 루프에서 증가 된 정수로 채워질 수있는 추가 숨겨진 열을 갖는 것입니다. 열의 정렬이 "제거"되면 해당 숨겨진 열에 오름차순 정렬을 적용하기 만하면됩니다. 이러한 방법으로 유지해야 할 다른 측면이 있습니다.
해당 코드 부분을 게시 할 수 있습니까? 나는 당신이 어떻게 코딩했는지 궁금하다. :) – Nyuno