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

셀 선택 통계를 WinForms 데이터 그리드에 표시하는 방법 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

Winforms윈폼 셀 선택 통계를 WinForms 데이터 그리드에 표시하는 방법

페이지 정보

작성자 GrapeCity 작성일 2022-04-12 14:54 조회 761회 댓글 0건

본문

.Net 컨트롤용 데이터 그리드인 FlexGrid는 모든 기본 기능 이외에 아웃 라인 트리, 정렬, 셀 병합, 마스킹된 편집, 변환된 콤보 및 이미지 목록과 자동 데이터 집계 등 고급 기능을 제공하는 강력하면서도 모든 기능을 갖춘 그리드입니다. 이 컨트롤은 강력한 API 및 광범위한 디자인 타임 지원을 통해 최종 사용자에게 친숙한 Excel과 같은 경험을 제공합니다.


대량의 컴퓨팅 데이터를 그리드에 표시할 때 상태 표시줄에서 Microsoft Excel이 제공하는 것과 동일한 런타임에 합계, 최대값, 최소값, 개수 및 평균과 같은 통계를 확인해야 할 수 있습니다. 요약 값은 아래 MS Excel GIF에 표시된 것처럼 다른 셀 범위를 선택할 때마다 업데이트됩니다.


셀 추가


FlexGrid에서도 Microsoft의 ToolStrip을 FlexGrid의 집계 기능과 결합하여 같은 결과를 얻을 수 있습니다.


.NET 6.0에서 FlexGrid를 사용하여 이 기능을 수행하려면 다음 단계로 구분하여 실행하세요.

  1. 새 .NET 6.0 Windows Forms 응용 프로그램 생성

  2. 데이터 소스를 FlexGrid에 할당

  3. UpdateStatistics 메서드를 만들고 처리하여 선택 통계 표시



새 .NET 6.0 Windows Forms 응용 프로그램 생성


Visual Studio 2022를 사용하여 Windows Forms .NET 6.0 응용 프로그램을 새로 만들고 FlexGrid NuGet 패키지를 추가하여 도구 상자에서 FlexGrid 컨트롤을 가져옵니다.


도구 상자


데이터를 표시하려면 FlexGrid 컨트롤을 Form에 놓고, 통계를 표시하려면 ToolStrip 컨트롤을 ToolStripLabel 항목과 함께 놓습니다.


flexgrid



데이터 소스를 FlexGrid에 할당


레이아웃을 완료한 후 DataSource 속성을 사용하여 데이터를 그리드에 첨부합니다. 이 블로그에서는 NORTHWIND 데이터베이스에서 주문 세부 정보 데이터를 수신하기 위해 사용자 정의 클래스 DataSource.cs를 사용합니다. 이 데이터베이스는 시스템의 다음 위치에 있습니다.


C:\Users\UserName\Documents\ComponentOne Samples\Common


사용자 정의 클래스의 GetRows 함수는 아래 쿼리 문자열을 사용하여 데이터를 검색한 후 이 데이터를 FlexGrid의 DataSource 속성에 할당하는 데 사용됩니다.

var sql = @"SELECT Distinct Orders.[OrderID], Orders.OrderDate, Shippers.CompanyName, Customers.Country as Country, [FirstName] + ' ' + [LastName] AS Salesperson, Products.ProductName AS Product, [Order Details].UnitPrice as UnitPrice, [Order Details].Quantity, [Order Details].Discount, ([Order Details].[UnitPrice]*[Quantity]*(1-[Discount])/100)*100 as ExtendedPrice FROM Shippers INNER JOIN (Products INNER JOIN ((Employees INNER JOIN (Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID) ON Employees.EmployeeID = Orders.EmployeeID) INNER JOIN [Order Details] ON Orders.OrderID = [Order Details].OrderID) ON Products.ProductID = [Order Details].ProductID) ON Shippers.ShipperID = Orders.ShipVia;";
​
SelectionStatisticsGrid.DataSource = DataSource.GetRows(sql);


데이터를 구성하기 위해 다음 코드를 사용하여 CompanyName 및 Country 열을 기준으로 데이터를 그룹화할 수 있습니다.

var groups = new List<GroupDescription>();
var group1 = new GroupDescription("CompanyName", ListSortDirection.Descending, true);
var group2 = new GroupDescription("Country", ListSortDirection.Descending, true);
groups.Add(group1);
groups.Add(group2);



UpdateStatistics 메서드를 만들고 처리하여 선택 통계 표시


다음 단계는 통계 값을 계산하는 것입니다. 이 작업을 위해 AggregateEnum 매개 변수 기준으로 현재 선택된 셀의 다양한 집계 통계를 계산하는 FlexGrid의 집계 메서드를 사용합니다.


다양한 통계를 표시하려면 Average, Count, Min, Max, Sum 등의 다양한 AggregateEnum 값과 함께 집계 메서드를 여러 번 호출해야 합니다. 마지막으로 문자열 개체에서 서식 지정을 통해 ToolStripLabel에 할당합니다.


통계 결과는 선택 항목이 둘 이상의 셀인 경우에만 필요할 것이므로 이 조건도 확인해야 합니다.


위에 나오는 모든 요소를 고려한 후 다음과 같은 UpdateStatistics 메서드를 구성합니다.

private void UpdateStatistics()
{
var text = string.Empty;
if (!SelectionStatisticsGrid.Selection.IsSingleCell)
{
//Generate the Statistics Data to show into ToolStrip
text = $"Average: {SelectionStatisticsGrid.Aggregate(AggregateEnum.Average):F2} " +
$"   Count: {SelectionStatisticsGrid.Aggregate(AggregateEnum.Count)} " +
$"   Minimum: {SelectionStatisticsGrid.Aggregate(AggregateEnum.Min)} "+
$"   Maximum: {SelectionStatisticsGrid.Aggregate(AggregateEnum.Max)} "+
$"   Summary: {SelectionStatisticsGrid.Aggregate(AggregateEnum.Sum):F2}"; Page layout
}
selectionStatisticsLabel.Text = text;
}


새로운 항목을 선택할 때마다 발생하는 FlexGrid의 SelChange 이벤트를 처리합니다. 최종 사용자가 그리드에서 여러 셀을 선택할 때마다 해당 셀 내에서 UpdateStatistics 메서드를 호출하여 ToolStripLabel에 통계를 표시합니다.


SelectionStatisticsGrid.SelChange += C1FlexGrid1_SelChange;
private void C1FlexGrid1_SelChange(object? sender, EventArgs e)
{
UpdateStatistics();
}


위의 단계를 모두 올바르게 수행한 경우 완성된 응용 프로그램은 아래 GIF처럼 동작합니다.


최종



C1 WinForms 제품군을 설치한 경우에는 시스템의 다음 위치에서 샘플을 찾을 수 있습니다.


  • .NET 6.0 컨트롤: C:\Users\UserName\Documents\ComponentOne Samples\WinForms\v6.0\FlexGrid\CS\FlexGridExplorer

  • .NET 4.5.2 컨트롤: C:\Users\UserName\Documents\ComponentOne Samples\WinForms\v4.5.2\FlexGrid\CS\SelectionStatistics


Github 링크에서 다운로드할 수도 있습니다.

NET 6.0 컨트롤 | .NET 4.5.2 컨트롤




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

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

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