WinForms [Sorting] 특정 행, 열 또는 범위 정렬하기
페이지 정보
작성자 GCK써니 작성일 2023-03-23 15:18 조회 517회 댓글 0건본문
관련링크
데이터를 정렬할 때, 주어진 열의 값을 기준으로 시트의 전체 행을 정렬하는 것이 일반적인 경우입니다. 그러나 간혹 특정 범위의 행 또는 특정 범위의 열만 정렬해야 할 수 있습니다.
예를 들어, 한 매장에서 보유한 제품의 품목명과 재고 수량이 입력된 시트가 있다고 가정합니다. 또 마지막 행에는 재고 수량의 합계가 입력되어 있다고 가정합니다. 이때 해당 데이터를 재고 수량 기준으로 정렬할 경우, 재고 수량의 합계가 입력된 마지막 행은 정렬에 포함되지 않아야 합니다.
위와 같은 사례를 위하여 Spread.NET에서는 특정 행, 열 또는 범위 정렬 기능을 지원합니다.
범위에서 데이터를 정렬하는 방법에는 두 가지가 있습니다.
- 바인딩 된 데이터의 경우, SortRows 및 SortColumns 메서드를 사용합니다.
- 바인딩되지 않은 데이터의 경우, SortRange 메서드를 사용합니다.
바인딩 된 데이터 - SortRows, SortColumns 메서드 사용하기
SortRows(또는 SortColumns) 메서드를 사용하여 하나 이상의 열(또는 행)을 기준으로 시트의 행(또는 열) 배열을 정렬합니다. 이는 데이터 모델에는 영향을 미치지 않으며 데이터가 표시되는 방식에만 영향을 미칩니다. 여러 오버로드는 행(또는 열)을 정렬하는 다양한 방법을 제공합니다. 이러한 메서드와 함께 SortInfo 객체를 사용하면, 정렬이 수행되는 방법을 추가로 사용자 지정할 수 있습니다.
오버로드 |
설명 |
특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다. |
|
지정된 비교를 사용하여 특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다. |
|
지정된 비교를 사용하여 특정 열을 기준으로 해당 시트의 모든 행을 정렬합니다. 상단/하단 고정 행의 정렬 여부를 설정할 수 있습니다. |
|
지정된 정렬 정보에 따라 해당 시트 내 하나의 행 범위를 정렬합니다. |
* SortColumns 메서드도 위와 유사합니다.
아래 예시에서는 두번째 컬럼의 값에 따라 시트의 모든 행을 정렬하고 있습니다. 열 인덱스는 0-base 이기 때문에, 두번째 열의 인덱스 값은 1이 됩니다. 이때, 정렬 표시기(Sort indicator)가 표시됩니다.
C#
fpspread1.ActiveSheet.SortRows(1,true,true);
VB.NET
FpSpread1.ActiveSheet.SortRows(1,True,True)
아래 예시에서는 미리 정의된 정렬 정보 배열을 사용하여 행 인덱스가 12인 행부터 230개 행을 정렬합니다.
C#
FarPoint.Win.Spread.SortInfo[] sorter = new FarPoint.Win.Spread.SortInfo[1]; sorter[0] = new FarPoint.Win.Spread.SortInfo(0, false, System.Collections.Comparer.Default); fpSpread1.ActiveSheet.SortRows(12, 230, sorter);
VB.NET
Dim sorter(1) As FarPoint.Win.Spread.SortInfo sorter(0) = New FarPoint.Win.Spread.SortInfo(0, False, System.Collections.Comparer.Default) fpSpread1.ActiveSheet.SortRows(12, 230, sorter)
public bool SortRange( int row, int column, int rowCount, int columnCount, bool byRows, SortInfo[] sortInfo )
매개변수 |
설명 |
row |
정렬할 셀 블록의 시작 행 인덱스 |
column |
정렬할 셀 블록의 시작 열 인덱스 |
rowCount |
셀 블록의 행 수 |
columnCount |
셀 블록의 열 수 |
by Row |
행(또는 열)별로 정렬하지 여부. byRow가 true이면 범위가 행별로 정렬됩니다. false이면 범위가 열별로 정렬됩니다. |
sortInfo |
정렬 기준 및 정렬 수행 방법이 포함된 SortInfo 객체 |
아래 예시 코드에서는 셀 범위 [A1:D2]를 행 별로 정렬할 때, A컬럼 기준 오름차순으로 정렬하고 있습니다.
FarPoint.Win.Spread.SortInfo[] sort = new FarPoint.Win.Spread.SortInfo[1]; sort[0] = new FarPoint.Win.Spread.SortInfo(0, true, System.Collections.Comparer.Default); fpSpread1.ActiveSheet.SetValue(0, 0, "C"); fpSpread1.ActiveSheet.SetValue(1, 0, "A"); fpSpread1.ActiveSheet.SetValue(2, 0, "E"); fpSpread1.ActiveSheet.SetValue(3, 0, "B"); fpSpread1.ActiveSheet.SetValue(0, 1, "3"); fpSpread1.ActiveSheet.SetValue(1, 1, "5"); fpSpread1.ActiveSheet.SetValue(2, 1, "1"); fpSpread1.ActiveSheet.SetValue(3, 1, "2"); fpSpread1.ActiveSheet.SortRange(0, 0, 4, 2, true, sort);
지금 바로 Spread.NET을 다운로드하여 직접 테스트해보세요!
댓글목록
등록된 댓글이 없습니다.