Winforms윈폼 WinForms DataGrid에서 런타임에 FlexGrid 필터를 편집하는 방법
페이지 정보
작성자 MESCIUS 작성일 2024-04-18 10:45 조회 8회 댓글 0건본문
관련링크
빠른 시작 가이드 | |
---|---|
필요한 항목 | Visual Studio 2022 및 .NET 8 |
참조 컨트롤 | (DataFilter의 일부) | - 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 페이지에서 완전한 샘플을 다운로드하십시오.
ComponentOne 컨트롤 및 Mescius에서 제공하는 모든 기능에 대해 자세히 알아보려면 를 확인하십시오!
지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!
댓글목록
등록된 댓글이 없습니다.