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

WinForms앱에서 데이터바인딩 계층구조 TreeView를 만드는 방법 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

WinForms앱에서 데이터바인딩 계층구조 TreeView를 만드는 방법

페이지 정보

작성자 GrapeCity 작성일 2023-01-12 11:15 조회 1,257회 댓글 0건

본문

TreeView 컨트롤은 여러 항목 선택으로 계층 구조 데이터를 시각화하는 우수한 인터페이스를 제공합니다. ComponentOne WinForms TreeView는 노드 추가, 제거, 편집 및 여러 열 표시, 드래그 앤 드롭, 노드 사용자 정의 등 추가 기능을 제공합니다.


이 글에서는 TreeView를 여러 열로 계층 구조 데이터에 바인딩하는 방법을 간단하게 세 단계로 살펴봅니다.

  1. 데이터 소스 만들기

  2. TreeView 바인딩

  3. 열 추가



데이터 소스 만들기


TreeView를 노스윈드(Northwind) 범주 및 제품 데이터에 바인딩하겠습니다. 첫 번째 수준에서는 범주 표에서 범주 및 설명을 표시하고 두 번째 수준에서는 제품 표에서 ProductName, QuantityPerUnit 및 UnitPrice를 표시하고자 합니다. 노스윈드(Northwind) 데이터베이스에는 이미 범주 및 제품 표 간의 관계가 있으며 여기서 각 범주에는 많은 제품이 있을 수 있습니다.


  • WinForms 프로젝트에서 노스윈드(Northwind) 데이터베이스에 대한 연결을 만들고 이름이 C1NorthwindDataset이라는 데이터 집합을 프로젝트에 추가했습니다.

  • 범주 및 제품 표를 데이터 집합에 끌어서 놓았습니다.


CategoriesTableAdapter 및 ProductsTableAdapter는 물론 위에서 표를 프로젝트에 추가했습니다.



TreeView 바인딩


C1TreeView 컨트롤을 해당 폼에 추가하고 코드 보기로 전환합니다.


폼 구성자에서 데이터 집합, CategoriesTableAdapter 및 ProductsTableAdapter 개체를 초기화합니다.

C1NWindDataSetTableAdapters.ProductsTableAdapter productsTableAdapter;
C1NWindDataSetTableAdapters.CategoriesTableAdapter categoriesTableAdapter;
C1NWindDataSet ds;

public Form1()
{
     InitializeComponent();
     ds = new C1NWindDataSet();
     productsTableAdapter = new C1NWindDataSetTableAdapters.ProductsTableAdapter();
     categoriesTableAdapter = new C1NWindDataSetTableAdapters.CategoriesTableAdapter();​
}


GetData 메서드를 추가하고 데이터 집합에 채웁니다. 이 데이터 집합으로 TreeView를 바인딩합니다.

 private void GetData()
      {
           productsTableAdapter.Fill(ds.Products);
           categoriesTableAdapter.Fill(ds.Categories);
           // set data to treeview            
           c1TreeView1.BindingInfo.DataMemberPath[0] = "Categories";
           c1TreeView1.BindingInfo.DataMemberPath[1] = "Products";
           c1TreeView1.BindingInfo.KeyField = "CategoryID";
           c1TreeView1.BindingInfo.DataSource = ds;
      }


DataMemberPath 속성을 사용하여 첫 번째 및 두 번째 수준에서 범주 및 제품을 할당합니다. KeyField를 CategoryID에 할당한 다음 데이터 소스를 설정합니다.



열 추가


이제 TreeView에 표시할 열을 추가할 수 있습니다. 이전에 언급했듯이 AddColumns 메서드를 만들고 범주 표에서 CategoryName 및 Descriptio을 추가하겠습니다. 아래 코드에서 추가되어 DisplayFieldName 및 HeaderText 속성을 설정하는 첫 번째 기본 열을 가져옵니다.


다음으로 TreeViewColumn을 추가하고, 필드의 수준 및 이름에 대한 매개 변수로 DisplayMemberPath를 설정합니다. 첫 번째 수준에 추가하려고 했으므로 매개 변수를 '0' 및 'Description'으로 설정합니다.


이와 유사하게 ProductName, QuantityPerUnit 및 UnitPrice 열을 제품 표의 두 번째 수준에 추가합니다.

private void AddColumns()
      {
           var column = c1TreeView1.Columns[0];
           column.DisplayFieldName = "CategoryName";
           column.HeaderText = "Category/Product Name";
           column.DisplayMemberPath.Add(1, "ProductName");
           column.Styles.WordWrap = true;
           column.Width = 150;
​
           C1.Win.TreeView.C1TreeColumn colDesc = new C1.Win.TreeView.C1TreeColumn();
           colDesc.DisplayMemberPath.Add(0, "Description");
           colDesc.HeaderText = "Description";
           colDesc.Styles.WordWrap = true;
           c1TreeView1.Columns.Add(colDesc);
​
           C1.Win.TreeView.C1TreeColumn colQty = new C1.Win.TreeView.C1TreeColumn();
           colQty.DisplayMemberPath.Add(1, "QuantityPerUnit");
           colQty.HeaderText = "QuantityPerUnit";
           colQty.AutoWidth = true;
           c1TreeView1.Columns.Add(colQty);
​
           C1.Win.TreeView.C1TreeColumn colUnitPrice = new C1.Win.TreeView.C1TreeColumn();
           colUnitPrice.DisplayMemberPath.Add(1, "UnitPrice");
           colUnitPrice.HeaderText = "UnitPrice";
           colUnitPrice.AutoWidth = true;
           c1TreeView1.Columns.Add(colUnitPrice);
      }


이제 데이터 집합에서 계층 구조 데이터를 표시하도록 TreeView를 구성했습니다. 폼 로드에서 GetData() 및 AddColumns() 메서드를 호출합니다.

private void Form1_Load(object sender, EventArgs e)
{
          GetData();
          AddColumns();
}


응용 프로그램을 실행하는 경우 각 범주 및 관련된 제품 정보를 볼 수 있습니다. 이 블로그 샘플에 대한 소스 코드를 다운로드할 수 있습니다.


TreeView는 XML 로딩 외에도 BindingLists, 셀프 참조에 데이터 바인딩을 지원합니다.



샘플 다운로드


GitHub에서 TreeView 제품 샘플을 찾을 수 있습니다.




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

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

인기글

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