본문 바로가기

프로그래밍&IT/C#

[.Net C#] Datagridview에서 문자열 -> 숫자열 정렬하기

Datagridview 소트할때, 숫자값으로 정렬하기


Visual Studio에서 기본 제공하는 DataGridView에서는 헤더를 클릭해서 정렬시

기본정렬은 문자열기준으로 됩니다.


(아래는 제가 개인적으로 만드는 프로그램입니다...)

아래는 주식수헤더를 가지고 정렬할때,

기본적인 정렬 기준은 문자열이다보니 아래처럼 정렬이 되는데요.


[기본 오름차순 & 내림차순한 결과값]


1. DataGridView에서 숫자값 비교

하지만, 필요할때는 숫자값을 비교해서 정렬할때가 필요할텐데요.

DataGridView의 이벤트인 SortCompare를 등록후 아래처럼 코딩하면 숫자값정렬이 가능합니다.


private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)

{

    int a = int.Parse(e.CellValue1.ToString()), b = int.Parse(e.CellValue2.ToString());

    e.SortResult = a.CompareTo(b);

    e.Handled = true;

}



[숫자를 비교해서, 오름차순 & 내림차순한 결과값]


2. 헤더정보 확인후 원하는 헤더만 숫자값정렬하기

그런데, 위 처럼 문자열과 숫자값이 있을때, 헤더별로 어떤건 숫자값 정렬, 어떤건 문자열값 비교가 필요할텐데

필요한 헤더정보를 가지고, 숫자값,문자열 정렬을 하시면 될것같습니다.


private void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)

{

if (e.Column.Name.Equals("TEST1") )    // 정렬할 컬럼의 이름

{

  int a = int.Parse(e.CellValue1.ToString()), b = int.Parse(e.CellValue2.ToString());

  e.SortResult = a.CompareTo(b);

  e.Handled = true;

}

}