연습: VSTO 추가 기능 프로젝트의 단순 데이터 바인딩
VSTO 추가 기능 프로젝트에서 호스트 컨트롤 및 Windows Forms 컨트롤에 데이터를 바인딩할 수 있습니다. 이 연습에서는 Microsoft Office Word 문서에 컨트롤을 추가하고 런타임에 데이터에 컨트롤을 바인딩하는 방법을 보여 줍니다.
적용 대상: 이 항목의 정보는 Word의 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.
이 연습에서는 다음 작업을 수행합니다.
런타임에 문서에 ContentControl 추가
컨트롤을 데이터 세트 인스턴스에 연결하는 BindingSource 만들기.
사용자가 레코드를 스크롤하고 컨트롤에서 볼 수 있도록 설정
참고 항목
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.
필수 조건
이 연습을 완료하려면 다음과 같은 구성 요소가 필요합니다.
Microsoft Office 개발자 도구를 포함하는 Visual Studio 버전입니다. 자세한 내용은 Office 솔루션을 개발하기 위한 컴퓨터 구성을 참조하세요.
Word 2013 또는 Word 2010.
AdventureWorksLT
샘플 데이터베이스가 연결된 SQL Server 2005 또는 SQL Server 2005 Express의 실행 중인 인스턴스 액세스 권한 SQL Server 샘플 GitHub 리포지토리에서AdventureWorksLT
데이터베이스를 다운로드할 수 있습니다. 데이터베이스 연결에 대한 자세한 내용은 다음 항목을 참조하세요.SQL Server Management Studio 또는 SQL Server Management Studio Express를 사용하여 데이터베이스를 연결하려면 방법: 데이터베이스 연결(SQL Server Management Studio)을 참조하세요.
명령줄을 사용하여 데이터베이스를 연결하려면 방법: SQL Server Express에 데이터베이스 파일 연결을 참조하세요.
새 프로젝트 만들기
첫 번째 단계는 Word VSTO 추가 기능 프로젝트를 만드는 것입니다.
새 프로젝트를 만들려면
Visual Basic 또는 C#을 사용하여 이름이 데이터베이스에서 문서 채우기인 Word VSTO 추가 기능 프로젝트를 만듭니다.
자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하세요.
Visual Studio에 ThisAddIn.vb 또는 ThisAddIn.cs 파일이 열리고 데이터베이스에서 문서 채우기 프로젝트가 솔루션 탐색기에 추가됩니다.
프로젝트의 대상이 .NET Framework 4 또는 .NET Framework 4.5인 경우 Microsoft.Office.Tools.Word.v4.0.Utilities.dll 어셈블리에 대한 참조를 추가합니다. 이 참조는 이 연습의 뒷부분에서 프로그래밍 방식으로 문서에 Windows Forms 컨트롤을 추가하는 데 필요합니다.
데이터 원본 만들기
데이터 원본 창을 사용하여 형식화된 데이터 세트를 프로젝트에 추가합니다.
프로젝트에 형식화된 데이터 세트를 추가하려면
데이터 원본 창이 표시되지 않으면 메뉴 모음에서 보기>다른 창>데이터 원본을 선택하여 이 창을 표시합니다.
새 데이터 소스 추가 를 선택하여 데이터 소스 구성 마법사를 시작합니다.
데이터베이스를 클릭하고 다음을 클릭합니다.
AdventureWorksLT
데이터베이스에 대한 기존 연결이 있는 경우 이 연결을 선택하고 다음을 클릭합니다.그렇지 않은 경우 새 연결을 클릭하고 연결 추가 대화 상자를 사용하여 새 연결을 만듭니다. 자세한 내용은 새 데이터 연결 추가를 참조하세요.
애플리케이션 구성 파일에 연결 문자열 저장 페이지에서 다음을 클릭합니다.
데이터베이스 개체 선택 페이지에서 테이블 을 확장하고 Customer(SalesLT)를 선택합니다.
Finish를 클릭합니다.
AdventureWorksLTDataSet.xsd 파일이 솔루션 탐색기에 추가됩니다. 이 파일은 다음 항목을 정의합니다.
AdventureWorksLTDataSet
라는 형식화된 데이터 세트. 이 데이터 세트는 AdventureWorksLT 데이터베이스의 Customer(SalesLT) 테이블 내용을 나타냅니다.CustomerTableAdapter
라는 TableAdapter. 이 TableAdapter를 사용하여AdventureWorksLTDataSet
에서 데이터를 읽고 쓸 수 있습니다. 자세한 내용은 TableAdapter 개요를 참조하세요.이 연습 뒷부분에서는 이러한 두 개체를 모두 사용합니다.
컨트롤 만들기 및 데이터에 컨트롤 바인딩
이 연습에서 데이터베이스 레코드를 보기 위한 인터페이스는 기본적인 것으로, 문서 내에서 즉시 만들어집니다. 하나의 ContentControl은 한 번에 단일 데이터베이스 레코드를 표시하고 두 개의 Button 컨트롤을 사용하면 레코드를 앞뒤로 스크롤할 수 있습니다. 콘텐츠 컨트롤은 BindingSource 를 사용하여 데이터베이스에 연결합니다.
컨트롤을 데이터에 바인딩하는 방법에 대한 자세한 내용은 Office 솔루션의 컨트롤에 데이터 바인딩을 참조하세요.
문서에서 인터페이스를 만들려면
ThisAddIn
클래스에서 다음 컨트롤을 선언하여Customer
데이터베이스의AdventureWorksLTDataSet
테이블을 표시 및 스크롤합니다.private AdventureWorksLTDataSet adventureWorksDataSet; private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter; private System.Windows.Forms.BindingSource customerBindingSource; private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl; private Microsoft.Office.Tools.Word.Controls.Button button1; private Microsoft.Office.Tools.Word.Controls.Button button2;
ThisAddIn_Startup
메서드에서 다음 코드를 추가하여 데이터 세트를 초기화하고,AdventureWorksLTDataSet
데이터베이스의 정보로 데이터 세트를 채웁니다.ThisAddIn_Startup
메서드에 다음 코드를 추가합니다. 이렇게 하면 문서를 확장하는 호스트 항목이 생성됩니다. 자세한 내용은 런타임 시 VSTO 추가 기능에서 Word 문서 및 Excel 통합 문서 확장을 참조하세요.문서의 시작 부분에서 여러 범위를 정의합니다. 이러한 범위는 텍스트를 삽입하고 컨트롤을 배치할 위치를 식별합니다.
extendedDocument.Paragraphs[1].Range.InsertParagraphBefore(); extendedDocument.Paragraphs[1].Range.InsertParagraphBefore(); extendedDocument.Paragraphs[1].Range.Text = "The companies listed in the AdventureWorksLT database: \n"; extendedDocument.Paragraphs[2].Range.Text = " "; Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First; Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last; Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
이전에 정의된 범위에 인터페이스 컨트롤을 추가합니다.
this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1"); this.button1.Text = "Previous"; this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2"); this.button2.Text = "Next"; this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl( range3, "richTextContentControl1");
AdventureWorksLTDataSet
를 사용하여 콘텐츠 컨트롤을 BindingSource에 바인딩합니다. C# 개발자의 경우 Button 컨트롤에 대해 두 개의 이벤트 처리기를 추가합니다.this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer; this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode); this.button1.Click += new EventHandler(button1_Click); this.button2.Click += new EventHandler(button2_Click);
데이터베이스 레코드를 탐색하는 다음 코드를 추가합니다.
추가 기능 테스트
Word를 열면 콘텐츠 컨트롤에 AdventureWorksLTDataSet
데이터 세트의 데이터가 표시됩니다. 다음 및 이전 단추를 클릭하여 데이터베이스 레코드를 스크롤합니다.
VSTO 추가 기능을 테스트하려면
F5키를 누릅니다.
이름이
customerContentControl
인 콘텐츠 컨트롤이 만들어지고 데이터로 채워집니다. 동시에adventureWorksLTDataSet
라는 데이터 세트 개체와 BindingSource라는customerBindingSource
가 프로젝트에 추가됩니다. ContentControl가 BindingSource에 바인딩되고 데이터 세트 개체에 바인딩됩니다.다음 및 이전 단추를 클릭하여 데이터베이스 레코드를 스크롤합니다.
관련 콘텐츠
- Office 솔루션의 데이터
- Office 솔루션의 컨트롤에 데이터 바인딩
- 방법: 데이터베이스의 데이터로 워크시트 채우기
- 방법: 데이터베이스의 데이터로 문서 채우기
- 방법: 서비스의 데이터로 문서 채우기
- 방법: 개체의 데이터로 문서 채우기
- 방법: 워크시트에서 데이터베이스 레코드 스크롤
- 방법: 호스트 컨트롤의 데이터로 데이터 원본 업데이트
- 연습: 문서 수준 프로젝트의 단순 데이터 바인딩
- 연습: 문서 수준 프로젝트의 복합 데이터 바인딩
- Office 솔루션에서 로컬 데이터베이스 파일 사용 개요
- 새 데이터 원본 추가
- Windows Forms 컨트롤을 Visual Studio의 데이터에 바인딩
- 방법: 개체의 데이터로 문서 채우기
- 방법: 호스트 컨트롤의 데이터로 데이터 원본 업데이트
- Office 솔루션에서 로컬 데이터베이스 파일 사용 개요
- BindingSource 구성 요소 개요