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

WinForms 응용 프로그램에서 판매 영수증 송장 양식을 만드는 방법 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

Winforms윈폼 WinForms 응용 프로그램에서 판매 영수증 송장 양식을 만드는 방법

페이지 정보

작성자 GrapeCity 작성일 2022-06-21 14:16 조회 652회 댓글 0건

본문

그룹화를 사용하지 않고 더 읽기 쉽고 구조화되도록 가로 스크롤 막대 없이 단일 보기에 FlexGrid의 데이터를 표시해야 하는 경우가 있습니다. WinForms용 ComponentOne은 C1FlexGridBandedView 컴포넌트를 도입했습니다. 이 컴포넌트는 밴드로 알려진 논리적 그룹으로 열을 구성하고 가로 스크롤을 피합니다. 두 개 이상의 열을 단일 헤더에 수집하여 다중 수준의 밴드 보기를 만들어야 합니다. 이 블로그에서 자세한 내용을 볼 수 있습니다.

많은 데이터 열을 단일 보기로 표시해야 하지만 많은 공간이 필요한 경우 고급 밴드 보기가 필요합니다. 고급 밴드 보기는 RowSpanColSpan 속성이 여러 행을 차지하여 하나씩 열을 정렬하는 데 사용되는 경우 만들어집니다. 행이 더 높아지지만 보기를 더 잘 읽을 수 있도록 보기에서 더 많은 열을 동시에 볼 수 있습니다. 고급 밴드 보기에서 그리드 캡션 영역은 두 개의 섹션으로 나뉩니다. 헤더 밴드레코드 밴드입니다. 헤더 밴드는 논리적으로 그룹화된 열의 머리글 역할을 하며 레코드 밴드는 개별 열에 연결된 열의 논리적 그룹을 나타냅니다.

고급 밴드 보기를 더 나은 방식으로 이해하기 위해 C1FlexGrid 컨트롤을 사용하여 가격 및 수익과 제품 정보를 표시하도록 판매 쪽지 생성의 사용 사례를 들어보겠습니다. 샘플에는 Excel 또는 PDF 파일로 내보낼 수 있는 내보내기 기능이 포함됩니다.

아래 설명된 대로 네 가지 중요한 단계를 사용하여 사용 사례를 구현해보겠습니다.

  1. 필수 Nuget 패키지로 Windows Forms 응용 프로그램 만들기
  2. C1FlexGrid를 데이터 소스에 바인딩
  3. 밴드 보기를 만들어 C1FlexGrid에 할당
  4. 판매 레코드를 Excel 및 PDF 파일로 내보내기

필수 Nuget 패키지로 Windows Forms 응용 프로그램 만들기

ComponentOne C1FlexGrid는 Windows Forms 기반 컨트롤입니다. C1FlexGrid 컨트롤을 사용하려면 먼저 Visual Studio 2022를 사용하여 Windows Forms .NET 6 응용 프로그램을 만들고 다음 패키지를 설치하여 내보내기 기능과 함께 고급 밴드 보기 기능을 사용해야 합니다.

C1FlexGrid 컨트롤 및 C1FlexGridBandedView 컴포넌트는 이러한 패키지를 설치했을 경우 Visual Studio Toolbox에서 찾아볼 수 있습니다. 다음과 같이 생긴 양식 디자이너에 컨트롤을 드래그앤드롭하여 레이아웃을 디자인할 수 있습니다.

판매 쪽지

참고: 사용자가 내보내기 기능을 사용할 수 있도록 양식 하단에 두 개의 버튼을 추가했습니다. 또한 응용 프로그램에 더욱 정교한 터치감을 제공하기 위해 ThemeController 컴포넌트도 포함했습니다.


C1FlexGrid를 데이터 소스에 바인딩

레이아웃을 완료한 후 DataSource 속성을 사용하여 데이터를 그리드에 연결합니다. 이 블로그에서는 NORTHWIND 데이터베이스에서 제품 데이터를 받기 위해 DataSource.cs라는 클래스를 사용합니다. 이 데이터베이스는 시스템의 다음 위치에 있습니다.

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

사용자 정의 클래스의 GetRows 함수는 아래의 쿼리 문자열을 사용하여 DataTable 개체에서 데이터를 가져오는 데 사용됩니다.

private DataTable data;
data = DataSource.GetRows("Select ProductID, ProductName, UnitPrice, UnitsInStock as Quantity, QuantityPerUnit as Unit from Products where UnitPrice>15 and Quantity >0");


DataColumn의 Expression 기능은 이미 데이터에 있지 않은 필수 열을 추가하고 계산하는 데 사용할 수 있습니다.

data.Columns.Add("ProfitUnitPrice", typeof(int), " UnitPrice -8");
data.Columns.Add("SalesAmount", typeof(int), "UnitPrice * Quantity");
data.Columns.Add("TotalProfit", typeof(int), "ProfitUnitPrice * Quantity");
data.Columns.Add("ProfitRate", typeof(int), "(TotalProfit / SalesAmount)*100");


데이터 표를 설정한 후 C1FlexGrid의 DataSource 속성에 할당합니다.

c1FlexGrid1.DataSource = data;


밴드 보기를 만들어 C1FlexGrid에 할당

컨트롤의 .NET Framework 버전으로 작업 중인 경우 블로그 게시물에 설명된 대로 밴드 편집기를 사용하여 디자인 시간 동안 밴드를 구성할 수 있습니다. 이 블로그에서는 .NET 6 컨트롤을 사용하므로 밴드 컬렉션 편집기를 사용하여 FlexGridBandedView 컴포넌트의 스마트 태그 패널에서 액세스할 수 있습니다.

밴드 컬렉션 편집기


디자인 타임에 밴드를 만들어 FlexGrid에 할당하면 다음과 비슷하게 보입니다.

FlexGrid에 할당


이 블로그 게시물에서는 처음부터 전체 밴드 보기를 코딩하는 방법을 살펴봅니다.

고급 밴드 보기는 단일 보기에서 수많은 행을 표시하도록 RowSpanColSpan 특성을 기반으로 구성됩니다. 밴드 클래스의 RowSpan 속성을 통해 밴드가 이 보기에서 차지해야 하는 최소 행의 수를 지정할 수 있으며 ColSpan 속성을 통해 밴드가 이 보기에서 차지해야 하는 최대 열의 수를 지정할 수 있습니다.

Band band1 = new Band();
Band band2 = new Band();
Band band3 = new Band();
Band band4 = new Band();
Band band5 = new Band();
Band band6 = new Band();
Band band7 = new Band();
Band band8 = new Band();
Band band9 = new Band();
Band band10 = new Band();
Band band11 = new Band();
Band band12 = new Band();
Band band13 = new Band();
 
//Create Header Bands
band1.Caption = "ID";
band1.ColSpan = 1;
band2.Caption = "Product Details";
band2.ColSpan = 3;
band3.Caption = "Price Details";
band3.ColSpan = 3;
 
//Add Child bands to band1
band4.Caption = "ProductID";
band4.ColSpan = 1;
band4.Name = "ProductID";
band1.Children.Add(band4);
 
//Add Child bands to band2
band5.Caption = "Product Name";
band5.ColSpan = 3;
band5.Name = "ProductName";
band6.Caption = "Quantity";
band6.ColSpan = 1;
band6.Name = "Quantity";
band7.Caption = "Unit";
band7.ColSpan = 2;
band7.Name = "Unit";
band2.Children.Add(band5);
band2.Children.Add(band6);
band2.Children.Add(band7);
 
//Add Child bands to band3
band8.Caption = "Unit Price";
band8.ColSpan = 1;
band8.Name = "UnitPrice";
band9.Caption = "Profit Unit Price";
band9.ColSpan = 1;
band9.Name = "ProfitUnitPrice";
band10.Caption = "Sales Amount";
band10.ColSpan = 1;
band10.Name = "SalesAmount";
band11.Caption = "Total Profit";
band11.ColSpan = 1;
band11.Name = "TotalProfit";
band12.Caption = "Profit Rate";
band12.ColSpan = 2;
band12.Name = "ProfitRate";
band3.Children.Add(band8);
band3.Children.Add(band9);
band3.Children.Add(band10);
band3.Children.Add(band11);
band3.Children.Add(band12);
 
//Add parent bands to C1FlexGridBandedView control
c1FlexGridBandedView1.Bands.Add(band1);
c1FlexGridBandedView1.Bands.Add(band2);
c1FlexGridBandedView1.Bands.Add(band3);


밴드 레이아웃을 완료한 후 FlexGridBandedView 컨트롤의 FlexGrid 속성에 이전 단계에서 구성한 그리드를 할당할 수 있습니다.

c1FlexGridBandedView1.FlexGrid = this.c1FlexGrid1;


판매 레코드를 Excel 및 PDF 파일로 내보내기

레코드를 표시하는 것만으로 충분하지 않은 경우에는 대개 사용자가 데이터를 파일로 보내도록 허용해야 합니다. FlexGrid 데이터를 PDF 파일로 내보내려면 System.PrintDocument 클래스를 사용합니다. PrinterName 속성을 "PDF로 Microsoft 인쇄"로 설정하고 클래스의 Print 메서드를 호출할 수 있습니다.

private void pdfExportButton_Click(object sender, EventArgs e){
  var printDocument = 
  c1FlexGrid1.PrintParameters.PrintDocument;
  c1FlexGrid1.PrintParameters.PrintGridFlags = 
  PrintGridFlags.FitToPageWidth;
  printDocument.PrinterSettings.PrinterName = "Microsoft Print to PDF";
  // Print document into Microsoft PDF printer
  printDocument.Print();
}


참고: 테두리 설정, 특정 페이지별 인쇄 또는 열 나누기 등의 고급 옵션은 여기에서 문서 링크를 확인하십시오.

FlexGrid 데이터를 Excel 파일로 내보내려면 아래 표시된 대로 SaveExcel 확장 메서드를 사용해야 합니다.

private void excelExportButton_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.DefaultExt = "xlsx";
saveFileDialog1.Filter = ".xlsx Files (*.xlsx)|*.xlsx";
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
c1FlexGrid1.SaveExcel(saveFileDialog1.FileName, FileFlags.AsDisplayed| FileFlags.IncludeMergedRanges|FileFlags.IncludeFixedCells|FileFlags.SaveMergedRanges);
}
}


위 과정을 올바르게 따랐다면 앱은 다음 gif에 표시된 대로 보이고 작동해야 합니다.

Excel로 내보내기

이 새로운 C1FlexGrid 컨트롤 기능이 마음에 드셨으면 좋겠습니다.

문서에서 열 밴드에 대해 자세히 알아볼 수 있으며. 샘플은 아래 링크에서 다운로드할 수 있습니다.

샘플 다운로드 





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

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

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