! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

문자와 숫자로 조합된 항목의 정렬 문의 > Q&A | 토론

본문 바로가기

ComponentOne

Q&A | 토론

WinForms윈폼 문자와 숫자로 조합된 항목의 정렬 문의

페이지 정보

작성자 죠이러버 작성일 2023-02-20 17:41 조회 719회 댓글 0건
제품 버전 : 4.8.20222.566
컨트롤 이름 : C1FlexGrid

본문

안녕하세요. 아래 그림처럼 문자와 숫자가 혼용된 항목의 경우 L1, L2, L3, ... L10, L11  이런형태로 정렬이 되도록 하고 싶습니다. 그리드를 여러 양식에서 같이 쓰는 방식이라 정렬 함수를 특정컬럼에 지정해 주기는 좀 어려운 측면이 있습니다. 가능하다면 전체 컬럼에 문자숫자 혼용인 경우 이와 같이 정렬이 되도록 하고 싶습니다. 답변 부탁드립니다.


 

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

1 답변

WinForms윈폼 Re: 문자와 숫자로 조합된 항목의 정렬 문의

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK싸이먼 작성일 2023-02-22 10:04 댓글 0건

본문

첨부파일

안녕하세요 

그레이프시티입니다.


문의하신 문자와 숫자를 혼합하여 사용하는 컬럼에서 정렬 시, 

컬럼의 내용들을 문자열로 인식을 하므로 정규식을 활용하여 문자열로 인식되는 숫자들을 

정수형으로 변환을 하여 비교를 해야 합니다.


아래의 CustomComparer 코드를 적용 하시는 것으로 원하시는 기능을 구현하실 수 있습니다.

internal class CustomComparer:IComparer
{
    private C1FlexGrid flex;
    bool _desc;

    public CustomComparer(C1FlexGrid flex, SortFlags order)
    {
        this.flex = flex;
        _desc = ((order & SortFlags.Descending) != 0);
    }

    public int Compare(object x, object y)
    {
        string s1 = (string)flex[((Row)x).Index, "Level"];
        string s2 = (string)flex[((Row)y).Index, "Level"];

        int icmp =(GetPostNumber(s1)> GetPostNumber(s2))?1:-1;
        // return sort order (ascending or descending)
        return (_desc) ? -icmp : icmp;
    }

    private int GetPostNumber(string s1)
    {
        var match = Regex.Match(s1, @"\d+$").Value;
        return Convert.ToInt32(match);
    }
}


첨부된 예제 프로젝트를 참고하시면 원하시는 기능을 구현하실 수 있을 겁니다.



추가로 궁금하신 사항은 문의해 주십시오.

감사합니다.

그레이프시티 드림.

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.