WinForms앱에서 데이터바인딩 계층구조 TreeView를 만드는 방법
페이지 정보
작성자 GrapeCity 작성일 2023-01-12 11:15 조회 1,257회 댓글 0건본문
관련링크
TreeView 컨트롤은 여러 항목 선택으로 계층 구조 데이터를 시각화하는 우수한 인터페이스를 제공합니다. ComponentOne WinForms TreeView는 노드 추가, 제거, 편집 및 여러 열 표시, 드래그 앤 드롭, 노드 사용자 정의 등 추가 기능을 제공합니다.
이 글에서는 TreeView를 여러 열로 계층 구조 데이터에 바인딩하는 방법을 간단하게 세 단계로 살펴봅니다.
데이터 소스 만들기
TreeView 바인딩
열 추가
데이터 소스 만들기
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는 외에도 , 에 데이터 바인딩을 지원합니다.
샘플 다운로드
지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!
댓글목록
등록된 댓글이 없습니다.