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

C1FlexGrid:마이닝 데이터 필터링 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

Winforms원폼 C1FlexGrid:마이닝 데이터 필터링

페이지 정보

작성자 GrapeCity 작성일 2020-09-22 14:33 조회 1,601회 댓글 0건

본문

첨부파일

이번 편에서는 ComponentOne WinForms 표 양식 컨트롤을 사용하여 FlexGrid의 빅 데이터에 대한 필터링, 순서배열, 그룹 나누기, 통합, 프린트, 내보내기에 대해 설명합니다.
 

FlexGrid는 최초 필터링, 순서배열, 그룹 나누기 및 통합 등의 데이터 정리 및 마이닝 도구를 제공합니다. 사용자는 간단하게 원하는 인명이나 지역을 필터링할 수 있으며 매출액이 300만을 넘는 점포의 리스트 같은 복잡한 업무 로직을 끌어올 수도 있습니다. 또 순서배열, 그룹나누기와 통합 등을 통해 데이터의 의미가 더욱 분명하게 드러나도록 각종 KPI 데이터를 결합합니다. 


이 밖에, FlexGrid는 표 양식 컨트롤이면서 보고서 기능도 제공하며, 프린트와 내보내기 기능을 통해 데이터 분석결과를 종이문서, Excel 또는 PDF파일로 출력할 수 있습니다.


1. FlexGrid 자체 정의 필터


FlexGrid는 자체정의 필터로 전문적인 수치를 처리할 수 있습니다. 이 기능은 예를 들어 자체정의 필터의 필터링 색상, 지리 또는 자체정의 데이터 유형 방면 등에 추천합니다. 


자체정의 필터를 만들려면 반드시 두 가지 유형을 만들어야 합니다. :


• 필터:

이 유형은 IC1ColumnFilter포트를 반드시 사용해야 합니다. 필터가 특정한 값에 응용되도록 지정할 수 있습니다. 필터를 리셋하고 필터의 변수를 조사하고 편집하는데 사용되는 에디터를 회수해야 합니다.
 

• 필터 에디터:

이 유형은 반드시 Control로부터 이어 받아, IC1ColumnFilterEditor의 포트를 사용해야 합니다. 해당 포트는 에디터를 초기화하고 필터에 변경 응용되는 사용방법을 지정할 수 있습니다.

자체 정의 필터의 샘플은 세 개의 자체정의필터를 포함합니다. 필터유형의 색상,일자/시간과 문자열의 값을 필터링 하는데 사용됩니다.

본편의 Demo에서는 각각 자체정의 한 필터색상,일자와 문자열을 필터링합니다. 구체적인 코드는 Demo의 CustomFilter파일 폴더에서 찾아볼 수 있습니다.


색상필터:


날짜필터:


문자열필터:


2. 데이터 소스 초기화 및 FlexGrid 필터 설정


먼저 DataTable데이터 소스를 설정합니다. 5개 열에 데이터를 추가합니다. 그 다음 FlexGrid의 DataSource를 통해 데이터 소스를 바인딩합니다. 

다시 OwnerDrawCell이벤트를 통해 Cell을 그립니다. 

마지막으로 FlexGrid의Column Filter에 상기 자체정의 필터를 설정해줍니다. 구체적인 코드는 다음과 같습니다. :

public CustomFiltering()
{
    InitializeComponent();

    //// add demo properties
    //AddProperty("AllowFiltering", _flex);

    dt.Columns.Add("문자열", typeof(String));
    dt.Columns.Add("일자", typeof(DateTime));
    dt.Columns.Add("정형", typeof(int));
    dt.Columns.Add("색상명", typeof(KnownColor));
    dt.Columns.Add("색상", typeof(Color));

    String[] names =
        {
            "Rob Walters",
            "Janice Galvin",
            "Garrett Vargas",
            "David Campbell",
            "Lynn Tsoflias",
            "Linda Mitchell",
            "Jillian Carson",
            "Alan Brewer",
            "William Vong"
        };

    var rnd = new Random();
    foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor)))
    {
        Color clr = Color.FromKnownColor(kc);
        dt.Rows.Add(names[rnd.Next(0, 8)], DateTime.Today.AddDays(-rnd.Next(0, 100)), rnd.Next(0, 1000), kc, clr);
    }

    // configure grid
    _flex.DataSource = dt;
    _flex.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
    _flex.OwnerDrawCell += _flex_OwnerDrawCell;
    _flex.AllowEditing = false;
    _flex.AllowFiltering = true;
    // assign custom filters
    _flex.Cols["색상"].Filter = new ColorFilter();
    _flex.Cols["일자"].Filter = new DateFilter();
    _flex.Cols["색상명"].Filter = new StringFilter();

}


 

3. FlexGrid의 Cell 다시 그리기


FlexGrid의 OwnerDrawCell이벤트를 이용하여 Cell을 다시 작성합니다. 

코드는 다음과 같습니다. :

void _flex_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
{
    if (_flex[e.Row, e.Col] is Color)
    {
        var clr = (Color)_flex[e.Row, e.Col];
        if (clr != null)
        {
            e.DrawCell(C1.Win.C1FlexGrid.DrawCellFlags.Background | C1.Win.C1FlexGrid.DrawCellFlags.Border);
            var rc = e.Bounds;
            rc.Inflate(-4, -2);
            using (var br = new SolidBrush(clr))
            {
                e.Graphics.FillRectangle(br, rc);
                e.Graphics.DrawRectangle(Pens.Black, rc);
            }
        }
    }
}



4. FlexGrid의 필터, 순서배열 및 그룹 나누기 시연


상기 코드에 따라 FlexGrid는 필터를 통해 순서배열, 그룹 나누기 및 통합 등의 기능을 결합하여 각종 KPI데이터를 더욱 분명하게 나타냅니다. 

결과는 다음 그림과 같습니다. :


해당 유형의 정의는 다음의 코드와 같습니다. 

구체적인 코드의 실현은 글 끝의 Demo의FlexHyperlink 유형을 참고할 수 있습니다.


5. FlexGrid 프린트


FlexGrid 프린트 샘플 다운로드 


FlexGrid는 표 양식 컨트롤일 뿐만 아니라 사용자를 위해 보고서 기능도 제공하고 있습니다. 

프린트 기능을 통해 데이터 분석결과를 프린트로 생성합니다. 

이 때, FlexGrid.PrintGrid기능을 이용하면 쉽게 프린트 할 수 있습니다.


코드예시:

this._flex.PrintGrid("CustomFilter", C1.Win.C1FlexGrid.PrintGridFlags.ShowPreviewDialog);


프린트 미리 보기 결과는 다음과 같습니다. : 



FlexGrid 프린트 샘플 다운로드

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

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

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