방법: Windows Forms BindingSource 구성 요소를 사용하여 조회 테이블 만들기
조회 테이블은 관련 테이블에 있는 레코드의 데이터를 표시하는 열이 포함된 데이터 테이블입니다. 다음 절차에서는 ComboBox 컨트롤을 사용하여 부모 테이블에서 자식 테이블까지의 외래 키 관계에 있는 필드를 표시합니다.
다음은 이러한 두 테이블과 이 관계를 시각화하는 데 도움이 되는 부모 테이블과 자식 테이블의 예입니다.
CustomersTable(부모 테이블)
CustomerID |
CustomerName |
---|---|
712 |
Paul Koch |
713 |
Tamara Johnston |
OrdersTable(자식 테이블)
OrderID |
OrderDate |
CustomerID |
---|---|---|
903 |
2004년 2월 12일 |
712 |
904 |
2004년 2월 13일 |
713 |
이 시나리오에서 CustomersTable 테이블에는 표시 및 저장하려는 실제 정보가 저장됩니다. 그러나 공간을 절약하기 위해 테이블에서 명확한 데이터는 생략됩니다. 또 다른 테이블인 OrdersTable에는 어떤 고객 ID 번호가 주문 날짜 및 주문 ID와 관련이 있는지에 대한 외관상의 특징과 관련된 정보만 포함됩니다. 이 테이블에는 고객의 이름이 포함되지 않습니다.
네 가지 중요한 속성은 조회 테이블을 만드는 ComboBox 컨트롤(Windows Forms) 컨트롤에서 설정됩니다.
DataSource 속성에는 테이블의 이름이 포함됩니다.
DisplayMember 속성에는 컨트롤 텍스트에 표시할 해당 테이블의 데이터 열(고객 이름)이 포함됩니다.
ValueMember 속성에는 저장된 정보가 들어 있는 해당 테이블의 데이터 열(부모 테이블의 ID 번호)이 포함됩니다.
SelectedValue 속성은 ValueMember를 기반으로 하여 자식 테이블에 대한 조회 값을 제공합니다.
아래 절차에서는 폼을 조회 테이블로 레이아웃하고 해당 컨트롤에 데이터를 바인딩하는 방법을 보여 줍니다. 이 절차를 성공적으로 수행하려면 앞에서 언급한 대로 부모 테이블과 자식 테이블 간에 외래 키 관계가 지정되어 있는 데이터 소스가 있어야 합니다.
사용자 인터페이스를 만들려면
도구 상자의 ComboBox 컨트롤을 폼으로 끌어 옵니다.
이 컨트롤은 부모 테이블의 열을 표시합니다.
자식 테이블의 세부 사항을 표시할 다른 컨트롤을 끌어 옵니다. 테이블에 있는 데이터의 형식에 따라 사용자가 선택하는 컨트롤이 결정됩니다. 자세한 내용은 기능별 Windows Forms 컨트롤을 참조하십시오.
BindingNavigator 컨트롤을 폼으로 끌어 옵니다. 이렇게 하면 자식 테이블에서 데이터를 탐색할 수 있습니다.
데이터에 연결한 다음 데이터를 컨트롤에 바인딩하려면
ComboBox를 선택하고 스마트 작업 문자 모양을 클릭하여 스마트 작업 대화 상자를 표시합니다.
데이터 바인딩된 항목 사용을 선택합니다.
데이터 소스 드롭다운 상자 옆에 있는 화살표를 클릭합니다. 프로젝트 또는 폼에 대해 데이터 소스를 이전에 구성한 경우 해당 소스가 나타납니다. 이전에 구성하지 않은 경우에는 다음 단계를 완료합니다. 이 예제에서는 Northwind 샘플 데이터베이스의 Customers 및 Orders 테이블을 사용하고 괄호로 묶어 해당 테이블을 표시합니다.
프로젝트 데이터 소스 추가를 클릭하여 데이터에 연결하고 데이터 소스를 만듭니다.
데이터 소스 구성 마법사 시작 페이지에서 다음을 클릭합니다.
데이터 소스 형식 선택 페이지에서 데이터베이스를 선택합니다.
데이터 연결 선택 페이지의 사용할 수 있는 연결 목록에서 데이터 연결을 선택합니다. 원하는 데이터 연결을 사용할 수 없으면 새 연결을 선택하여 데이터 연결을 새로 만듭니다. 자세한 내용은 연결 추가/수정 대화 상자(일반)를 참조하십시오.
응용 프로그램 구성 파일에서 연결 문자열을 저장하려면 **예, 다음으로 연결을 저장합니다.**를 클릭합니다.
응용 프로그램으로 가져올 데이터베이스 개체를 선택합니다. 이 경우 외래 키 관계의 부모 테이블과 자식 테이블(예: Customers 및 Orders)을 선택합니다.
원하는 경우 기본 데이터 집합 이름을 바꿉니다.
마침을 클릭합니다.
멤버 표시 드롭다운 상자에서 콤보 상자에 표시할 열 이름(예: ContactName)을 선택합니다.
값 멤버 드롭다운 상자에서 자식 테이블에서 조회 작업을 수행할 열(예: CustomerID)을 선택합니다.
선택한 값 드롭다운 상자에서 프로젝트 데이터 소스 및 부모와 자식 테이블이 포함된 방금 작성한 데이터 집합으로 이동합니다. 부모 테이블의 값 멤버인 자식 테이블의 같은 속성을 선택합니다(예: Orders.CustomerID). 해당 BindingSource, 데이터 집합 및 테이블 어댑터 구성 요소가 만들어지고 폼에 추가됩니다.
BindingNavigator 컨트롤을 자식 테이블의 BindingSource에 바인딩합니다(예: OrdersBindingSource).
표시하려는 자식 테이블 BindingSource의 세부 사항 필드(예: OrdersBindingSource)에 ComboBox 및 BindingNavigator 컨트롤 이외의 컨트롤을 바인딩합니다.