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

WinForms DataGrid에서 런타임에 FlexGrid 필터를 편집하는 방법 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

Winforms윈폼 WinForms DataGrid에서 런타임에 FlexGrid 필터를 편집하는 방법

페이지 정보

작성자 MESCIUS 작성일 2024-04-18 10:45 조회 8회 댓글 0건

본문

빠른 시작 가이드
필요한 항목ComponentOne WinForms Edition | Visual Studio 2022 및 .NET 8
참조 컨트롤FlexGridFilterEditor(DataFilter의 일부) | 문서GitHub 샘플 - DataFilterExplorer
자습서 개념이 문서에서는 두 컨트롤을 조합하여 고급 필터링을 제공하는 방법과 데이터를 필터링한 후 FlexGrid의 푸터에 요약을 표시하는 방법을 설명합니다.


FlexGrid에는 코드 한 줄도 작성하지 않고 디자이너에서 직접 구현할 수 있는 멋진 기능이 가득하며, GitHub에 제공되는 샘플 중 하나가 FilterEditor를 WinForms용 FlexGrid와 통합하는 방법을 보여줍니다.


이 샘플에서는 아래 스크린샷에 표기된 대로, 런타임에 컨텍스트 메뉴에서 FilterEditor를 호출하는 방법과 데이터를 필터링한 후 그리드의 푸터에 필터 요약을 표시하는 방법에 대해 설명합니다.



이 블로그의 목표는 코드를 자세히 살펴보고 위 샘플이 배치되는 방식을 보여주는 것입니다. 이제 바로 시작해 보겠습니다!



빠른 설정


시작하려면 FlexGrid와 FilterEditor를 모두 양식으로 끌어다 놓아야 합니다.

FlexGrid와 FilterEditor를 바인딩하려면 두 컨트롤의 DataSource 속성을 동일한 개체로 설정하기만 하면 됩니다.

c1FlexGrid1.DataSource = dt;
c1FilterEditor1.DataSource = dt;


이렇게 하면 FlexGrid와 FilterEditor 컨트롤에 동일한 값이 제공됩니다.


두 컨트롤을 연결하고 필터에 표시된 변경 사항을 그리드에 적용하려면, FilterEditor의 ApplyFilterAsync() 메서드를 사용해야 합니다. 또한 필터 값을 편집한 후 ApplyFilterAsync() 메서드를 호출하기 위한 이벤트도 필요합니다.



양식 버튼으로 필터 편집 


일반적으로 버튼을 사용하면 그리드에 적용할 이벤트를 완벽하게 실행할 수 있으므로, 필터를 적용하기 위한 버튼과 필터를 재설정하기 위한 버튼을 만듭니다.



다음은 이러한 작업을 실행하는 버튼-클릭 이벤트에 포함된 간단한 코드 행의 스크린샷입니다.


이는 FilterEditor 컨트롤을 통해 FlexGrid에 기본 필터링 기능을 추가하기에 충분합니다.

완전한 GitHub 샘플에는 강조하고자 하는 몇 가지 추가 기능이 포함되어 있으므로 코드를 직접 확인하시기 바랍니다.



컨텍스트(Context) 메뉴로 필터 편집


FlexGrid에 사용자 정의된 컨텍스트 메뉴를 추가하려면 NuGet을 통해 프로젝트에 C1.Win.Command.dll을 추가해야 합니다.


Form_Load 이벤트 내에서 FlexGrid에 추가할 컨텍스트 메뉴 명령을 포함할 C1CommandHolder 개체를 만들어야 합니다.


이는 다음 코드를 사용하여 완료할 수 있습니다.

C1CommandHolder ch = C1CommandHolder.CreateCommandHolder(this);


이 예의 경우, 복사 명령을 만들고 클릭 이벤트를 통해, 메뉴 항목이 클릭될 때 명령을 복사할 수 있습니다.


또한, 다음과 같이 쿼리 처리기를 사용하여 C1Command를 통해 명령을 자동으로 최신 상태로 유지합니다.

// Create and set up the Copy command
C1Command cmdCopy = ch.CreateCommand();
cmdCopy.Text = "&Copy";
cmdCopy.Click += new C1.Win.C1Command.ClickEventHandler(clickCopy);
cmdCopy.CommandStateQuery += new C1.Win.C1Command.CommandStateQueryEventHandler(queryCopy);        


다음으로 복사 명령을 포함할 컨텍스트 메뉴를 만들고 해당 컨텍스트 메뉴를 FlexGrid 컨트롤에 할당합니다.

컨텍스트 메뉴는 C1CommandHolder를 사용하여 명령을 만들어 컨텍스트 메뉴에 할당할 때 생성됩니다.  

이는 C1CommandHolder.CreateCommand() 및 C1CommandHolder.SetC1ContextMenu() 메서드를 통해 실행됩니다.

C1ContextMenu cm = ch.CreateCommand(typeof(C1ContextMenu)) as C1ContextMenu;
​
// Fill it with the links to the commands
cm.CommandLinks.Add(new C1CommandLink(cmdCopy));
ch.SetC1ContextMenu(flexGrid1, cm);  


마지막으로 clickCopy() 메서드를 호출하여 복사 명령 작업을 처리해야 합니다.

queryCopy() 메서드는 적절한 값이 복사될 수 있도록 복사 명령의 현재 상태를 제공합니다.


컨텍스트 메뉴에서 복사 명령을 클릭하면 FlexGrid 셀 안의 값이 클립보드에 복사됩니다.

private void clickCopy(object sender, C1.Win.Command.ClickEventArgs e)
    {
        this.flexGrid1.Copy();
    }
//provides the current state of the copy command
private void queryCopy(object sender, C1.Win.Command.CommandStateQueryEventArgs e)
    {
        e.Enabled = this.flexGrid1.Selection.IsValid;
    }


여기에 컨텍스트 메뉴의 복사 명령과 표준 바로 가기 키 Ctrl+V를 통해 사용할 수 있는 붙여넣기 기능이 표시됩니다.


 


필터 요약 푸터, 체크박스 필터링 등


GitHub에 제공된 샘플에서, 그리드에 필터를 적용하거나 제거하기 위해 토글할 수 있는 체크박스 및 그리드의 푸터에 설정된 필터 요약과 같은 기능을 확인할 수 있습니다.


이 샘플에서는 체크박스 필터링 및 요약 패널을 처리하는 사용자 컨트롤이 생성됩니다.

정확한 코드를 보려면, 체크박스 필터링 및 필터 요약 푸터가 포함된 정확한 파일을 확인하거나 위에 연결된 기본 GitHub 페이지에서 완전한 샘플을 다운로드하십시오.


ComponentOne 컨트롤 및 Mescius에서 제공하는 모든 기능에 대해 자세히 알아보려면 기본 페이지를 확인하십시오!



지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

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