UltraGrid 정렬, 필터하기
dgList1는 UltraWinGrid로, LemBand은 자체컨트롤임. 거의 Band와 비슷할듯.

기존 정렬을 필터가 적용안되어 숨김인덱스를 찾아 처리하였는데,

이것은 필터도 포함이니 숨김인덱스 찾을 필요없음.

 

//정렬수, 필터수를 가져온다.(필터는 전체를 가져옴)
int iSortedColumnsCount = this.dgList1.LemBand.SortedColumns.Count;
int iColumnFiltersCount = this.dgList1.LemBand.ColumnFilters.Count;

////정렬명, 정렬방식을 넣어줌. 정렬용 임시배열
string[,] strDivSrot = new string[iSortedColumnsCount, 2];

for(int j=0;j<iSortedColumnsCount;j++)
{
 strDivSrot[j, 0] = this.dgList1.LemBand.SortedColumns.GetItem(j).ToString();
 strDivSrot[j, 1] = this.dgList1.LemBand.SortedColumns[j].SortIndicator.ToString();
}

//필터용 필터,필터세부내용,필터연산자등 필터용 임시배열
ColumnFilter[] cfDivFilt = new ColumnFilter[iColumnFiltersCount];
FilterConditionsCollection[] fcDivFilt = new FilterConditionsCollection[iColumnFiltersCount];
Infragistics.Win.UltraWinGrid.FilterLogicalOperator[] loDivFilt = new Infragistics.Win.UltraWinGrid.FilterLogicalOperator[iColumnFiltersCount];

for (int k = 0; k < iColumnFiltersCount; k++)
{
 cfDivFilt[k] = this.dgList1.LemBand.ColumnFilters[k];
 fcDivFilt[k] = this.dgList1.LemBand.ColumnFilters[k].FilterConditions;
 loDivFilt[k] = this.dgList1.LemBand.ColumnFilters[k].LogicalOperator;
}

.........

//정렬배열이 있으면
if (strDivSrot.Length > 0)
{
 //배열이 [X,2]이므로 2로 나누어
 for (int j = 0; j < strDivSrot.Length / 2; j++)
 {
  //Descending이면 true로 필터 추가
  this.dgList1.LemBand.SortedColumns.Add(strDivSrot[j, 0], "Descending".Equals(strDivSrot[j, 1]));
 }
}

//필터배열이 있으면
if (cfDivFilt.Length > 0)
{
 for (int m = 0; m < cfDivFilt.Length; m++)
 {
  //필터세부내역이 있으면
  if (fcDivFilt[m].Count > 0)
  {
   //혹시모를 키가 변경될수 있으므로 for로 키값확인.
   for (int n = 0; n < this.dgList1.LemBand.ColumnFilters.Count; n++)
   {
    if (this.dgList1.LemBand.ColumnFilters[n].Key.Equals(cfDivFilt[m].Key))
    {
     //먼서 필터연산자먼저(All(AND), Any(OR))
     this.dgList1.LemBand.ColumnFilters[n].LogicalOperator = loDivFilt[m];

     foreach (FilterCondition fcNeo in fcDivFilt[m])
     {
      //세부내역을 넣어줌.
      this.dgList1.LemBand.ColumnFilters[n].FilterConditions.Add(fcNeo);
     }
    }
   }
  }
 }
}

Posted by 말없제이
,