연습: 응용 프로그램 수준 프로젝트의 복합 데이터 바인딩
응용 프로그램 수준 프로젝트의 호스트 컨트롤 및 Windows Forms 컨트롤에 데이터를 바인딩할 수 있습니다. 이 연습에서는 런타임에 Microsoft Office Excel 워크시트에 컨트롤을 추가하고 해당 컨트롤을 데이터에 바인딩하는 방법을 보여 줍니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010의 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 다음 작업을 수행합니다.
런타임에 워크시트에 ListObject 컨트롤 추가
컨트롤을 데이터 집합의 인스턴스에 연결하는 BindingSource 만들기
참고
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
Excel 2007 또는 Excel 2010
AdventureWorksLT 샘플 데이터베이스가 연결되어 있는 SQL Server 2005 또는 SQL Server 2005 Express의 실행 중인 인스턴스에 액세스. AdventureWorksLT 데이터베이스는 CodePlex 웹 사이트에서 다운로드할 수 있습니다. 데이터베이스 연결에 대한 자세한 내용은 다음 항목을 참조하십시오.
SQL Server Management Studio 또는 SQL Server Management Studio Express를 사용하여 데이터베이스를 연결하려면 방법: 데이터베이스 연결(SQL Server Management Studio)을 참조하십시오.
명령줄을 사용하여 데이터베이스를 연결하려면 방법: SQL Server Express에 데이터베이스 파일 첨부를 참조하십시오.
새 프로젝트 만들기
첫 번째 단계에서는 Excel 추가 기능 프로젝트를 만듭니다.
새 프로젝트를 만들려면
Visual Basic 또는 C#을 사용하여 Populating Worksheets from a Database라는 Excel 추가 기능 프로젝트를 만듭니다.
자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
ThisAddIn.vb 또는 ThisAddIn.cs 파일이 열리고 솔루션 탐색기에 Populating Worksheets from a Database 프로젝트가 추가됩니다.
데이터 소스 만들기
데이터 소스 창을 사용하여 형식화된 데이터 집합을 프로젝트에 추가합니다.
프로젝트에 형식화된 데이터 집합을 추가하려면
데이터 메뉴에서 새 데이터 소스 추가를 클릭합니다.
데이터 소스 구성 마법사가 열립니다.
데이터베이스를 클릭하고 다음을 클릭합니다.
AdventureWorksLT 데이터베이스에 대한 기존 연결이 있으면 해당 연결을 선택하고 다음을 클릭합니다.
그렇지 않으면 새 연결을 클릭하고 연결 추가 대화 상자에서 새 연결을 만듭니다. 자세한 내용은 방법: 데이터베이스의 데이터에 연결을 참조하십시오.
응용 프로그램 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.
데이터베이스 개체 선택 페이지에서 테이블을 확장한 다음 **Address (SalesLT)**를 선택합니다.
마침을 클릭합니다.
솔루션 탐색기에 AdventureWorksLTDataSet.xsd 파일이 추가됩니다. 이 파일은 다음 항목을 정의합니다.
이름이 AdventureWorksLTDataSet인 형식화된 데이터 집합. 이 데이터 집합은 AdventureWorksLT 데이터베이스의 Address (SalesLT) 테이블에 있는 콘텐츠를 나타냅니다.
이름이 AddressTableAdapter인 TableAdapter. 이 TableAdapter는 AdventureWorksLTDataSet에서 데이터를 읽고 쓰는 데 사용할 수 있습니다. 자세한 내용은 TableAdapter 개요를 참조하십시오.
이 연습의 뒷부분에서 이들 개체를 모두 사용하게 됩니다.
컨트롤 만들기 및 데이터에 컨트롤 바인딩
이 연습에서는 사용자가 통합 문서를 여는 즉시 ListObject 컨트롤에 선택한 테이블의 모든 데이터가 표시됩니다. 목록 개체는 BindingSource를 사용하여 컨트롤을 데이터베이스에 연결합니다.
컨트롤을 데이터에 바인딩하는 방법에 대한 자세한 내용은 Office 솔루션의 컨트롤에 데이터 바인딩을 참조하십시오.
목록 개체, 데이터 집합 및 테이블 어댑터를 추가하려면
ThisAddIn 클래스에서 다음 컨트롤을 선언하여 AdventureWorksLTDataSet 데이터 집합의 Address 테이블을 표시합니다.
Private addressListObject As Microsoft.Office.Tools.Excel.ListObject Private adventureWorksDataSet As AdventureWorksLTDataSet Private addressTableAdapter As AdventureWorksLTDataSetTableAdapters.AddressTableAdapter Private addressBindingSource As System.Windows.Forms.BindingSource
private Microsoft.Office.Tools.Excel.ListObject addressListObject; private AdventureWorksLTDataSet adventureWorksDataSet; private AdventureWorksLTDataSetTableAdapters.AddressTableAdapter addressTableAdapter; private System.Windows.Forms.BindingSource addressBindingSource;
ThisAddIn_Startup 메서드에서 다음 코드를 추가하여 데이터 집합을 초기화하고 AdventureWorksLTDataSet 데이터 집합의 정보로 데이터 집합을 채웁니다.
Me.addressTableAdapter = New AdventureWorksLTDataSetTableAdapters.AddressTableAdapter() Me.adventureWorksDataSet = New AdventureWorksLTDataSet() Me.addressTableAdapter.Fill(Me.adventureWorksDataSet.Address) Me.addressBindingSource = New System.Windows.Forms.BindingSource()
this.addressTableAdapter = new AdventureWorksLTDataSetTableAdapters.AddressTableAdapter(); this.adventureWorksDataSet = new AdventureWorksLTDataSet(); this.addressTableAdapter.Fill(this.adventureWorksDataSet.Address); this.addressBindingSource = new System.Windows.Forms.BindingSource();
ThisAddIn_Startup 메서드에 다음 코드를 추가합니다. 이 코드는 워크시트를 확장하는 호스트 항목을 생성합니다. 자세한 내용은 런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장을 참조하십시오.
참고
다음 예제에서는 .NET Framework 4을 대상으로 하는 프로젝트를 작업합니다. .NET Framework 3.5를 대상으로 하는 프로젝트에서 이 예제를 사용하려면 코드의 주석을 참조하십시오.
Dim worksheet As Excel.Worksheet = DirectCast(Me.Application.ActiveWorkbook.Worksheets(1), Excel.Worksheet) ' Create a workhseet host item for .NET Framework 4 projects. Dim extendedWorksheet As Worksheet = Globals.Factory.GetVstoObject(worksheet) ' For .NET Framework 3.5 projects, use the following code to create a worksheet host item. ' Dim extendedWorksheet As Worksheet = worksheet.GetVstoObject()
Excel.Worksheet worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1]; // Create a workhseet host item for .NET Framework 4 projects. Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet); // For .NET Framework 3.5 projects, use the following code to create a worksheet host item. // Worksheet extendedWorksheet = worksheet.GetVstoObject();
범위를 만들고 ListObject 컨트롤을 추가합니다.
Dim cell As Excel.Range = extendedWorksheet.Range("$A$1:$G$5", System.Type.Missing) Me.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1")
Excel.Range cell = extendedWorksheet.Range["$A$1:$G$5", System.Type.Missing]; this.addressListObject = extendedWorksheet.Controls.AddListObject(cell, "list1");
BindingSource를 사용하여 AdventureWorksLTDataSet에 목록 개체를 바인딩합니다. 목록 개체에 바인딩할 열의 이름을 전달합니다.
Me.addressBindingSource.DataSource = Me.adventureWorksDataSet.Address Me.addressListObject.AutoSetDataBoundColumnHeaders = True Me.addressListObject.SetDataBinding( _ Me.addressBindingSource, "", "AddressID", "AddressLine1", _ "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode")
this.addressBindingSource.DataSource = this.adventureWorksDataSet.Address; this.addressListObject.AutoSetDataBoundColumnHeaders = true; this.addressListObject.SetDataBinding( this.addressBindingSource, "", "AddressID", "AddressLine1", "AddressLine2", "City", "StateProvince", "CountryRegion", "PostalCode");
추가 기능 테스트
Excel을 열면 ListObject 컨트롤에 AdventureWorksLTDataSet 데이터 집합의 Address 테이블에 있는 데이터가 표시됩니다.
추가 기능을 테스트하려면
F5 키를 누릅니다.
addressListObject라는 ListObject 컨트롤이 워크시트에 만들어집니다. 이와 함께 adventureWorksLTDataSet이라는 데이터 집합 개체와 addressBindingSource라는 BindingSource가 프로젝트에 추가됩니다. ListObject가 BindingSource에 바인딩되고, 이는 다시 데이터 집합 개체에 바인딩됩니다.
참고 항목
작업
방법: Host 컨트롤의 데이터로 데이터 소스 업데이트
참조
개념
Office 솔루션에서 로컬 데이터베이스 파일 사용 개요
Visual Studio에서 데이터에 Windows Forms 컨트롤 바인딩
Office 솔루션에서 로컬 데이터베이스 파일 사용 개요
Windows Forms 응용 프로그램에서 데이터에 연결