다음을 통해 공유


방법: Host 컨트롤의 데이터로 데이터 소스 업데이트

호스트 컨트롤을 데이터 소스에 바인딩하고 컨트롤의 데이터에 대한 변경 내용으로 데이터 소스를 업데이트할 수 있습니다. 이 프로세스의 두 가지 주요 단계는 다음과 같습니다.

  1. 메모리 내의 데이터 소스를 컨트롤의 수정된 데이터로 업데이트합니다. 일반적으로 메모리 내의 데이터 소스는 DataSet, DataTable 또는 그 밖의 데이터 개체입니다.

  2. 메모리 내의 데이터 소스에서 변경된 데이터로 데이터베이스를 업데이트합니다. 이 단계는 데이터 소스가 SQL Server 또는 Microsoft Office Access 데이터베이스와 같은 백 엔드 데이터베이스에 연결되어 있는 경우에만 수행할 수 있습니다.

호스트 컨트롤 및 데이터 바인딩에 대한 자세한 내용은 호스트 항목 및 호스트 컨트롤 개요Office 솔루션의 컨트롤에 데이터 바인딩을 참조하십시오.

적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

메모리 내의 데이터 소스 업데이트

기본적으로 Word 문서의 콘텐츠 컨트롤이나 Excel 워크시트의 명명된 범위 컨트롤 같이 단순 데이터 바인딩을 사용할 수 있는 호스트 컨트롤은 데이터 변경 내용을 메모리 내의 데이터 소스에 저장하지 않습니다. 즉, 최종 사용자가 호스트 컨트롤에서 값을 변경하고 해당 컨트롤 밖으로 이동하는 경우 컨트롤의 새 값이 데이터 소스에 자동으로 저장되지 않습니다.

데이터 소스에 데이터를 저장하려면 런타임에 특정 이벤트에 대한 응답으로 데이터 소스를 업데이트하는 코드를 작성하거나 컨트롤의 값이 변경될 때 데이터 소스를 자동으로 업데이트하도록 컨트롤을 구성합니다.

ListObject 변경 내용은 메모리 내의 데이터 소스에 저장할 필요가 없습니다. ListObject 컨트롤을 데이터에 바인딩하면 ListObject 컨트롤은 추가적인 코드 없이도 변경 내용을 자동으로 메모리 내의 데이터 소스에 저장합니다.

런타임에 메모리 내의 데이터 소스를 업데이트하려면

  • 컨트롤을 데이터 소스에 바인딩하는 Binding 개체의 WriteValue 메서드를 호출합니다.

    다음 예제에서는 Excel 워크시트의 NamedRange 컨트롤에 대한 변경 내용을 데이터 소스에 저장합니다. 이 예제에서는 이름이 namedRange1이고 Value2 속성이 데이터 소스의 필드에 바인딩된 NamedRange 컨트롤을 사용하고 있다고 가정합니다.

    Me.NamedRange1.DataBindings("Value2").WriteValue()
    
    this.namedRange1.DataBindings["Value2"].WriteValue();
    

자동으로 메모리 내의 데이터 소스 업데이트

메모리 내의 데이터 소스를 자동으로 업데이트하도록 컨트롤을 구성할 수도 있습니다. 문서 수준 프로젝트에서는 코드 또는 디자이너를 사용하여 이 작업을 수행할 수 있습니다. 응용 프로그램 수준 프로젝트에서는 코드를 사용해야 합니다.

코드를 사용하여 메모리 내의 데이터 소스를 자동으로 업데이트하도록 컨트롤을 설정하려면

  • 컨트롤을 데이터 소스에 바인딩하는 Binding 개체의 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 모드를 사용합니다. 다음 두 개의 옵션으로 데이터 소스를 업데이트할 수 있습니다.

    • 컨트롤의 유효성이 검사될 때 데이터 소스를 업데이트하려면 이 속성을 System.Windows.Forms.DataSourceUpdateMode.OnValidation으로 설정합니다.

    • 컨트롤의 데이터 바인딩된 속성 값이 변경될 때 데이터 소스를 업데이트하려면 이 속성을 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged로 설정합니다.

      참고

      Word에서는 문서 변경 알림이나 컨트롤 변경 알림을 제공하지 않으므로 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 옵션은 Word 호스트 컨트롤에는 적용되지 않습니다. 그러나 Word 문서의 Windows Forms 컨트롤에는 이 옵션을 사용할 수 있습니다.

    다음 예제에서는 컨트롤의 값이 변경될 때 데이터 소스를 자동으로 업데이트하도록 NamedRange 컨트롤을 구성합니다. 이 예제에서는 이름이 namedRange1이고 Value2 속성이 데이터 소스의 필드에 바인딩된 NamedRange 컨트롤을 사용하고 있다고 가정합니다.

    Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _
        DataSourceUpdateMode.OnPropertyChanged
    
    this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
        DataSourceUpdateMode.OnPropertyChanged;
    

디자이너를 사용하여 메모리 내의 데이터 소스를 자동으로 업데이트하도록 컨트롤을 설정하려면

  1. Visual Studio의 디자이너에서 Word 문서나 Excel 통합 문서를 엽니다.

  2. 데이터 소스를 자동으로 업데이트할 컨트롤을 클릭합니다.

  3. 속성 창에서 (DataBindings) 속성을 확장합니다.

  4. (고급) 속성 옆의 줄임표(VisualStudioEllipsesButton 스크린 샷) 단추를 클릭합니다.

  5. 서식 지정 및 고급 바인딩 대화 상자에서 데이터 소스 업데이트 모드 드롭다운 목록을 클릭하고 다음 값 중 하나를 선택합니다.

    • 컨트롤의 유효성이 검사될 때 데이터 소스를 업데이트하려면 OnValidation을 선택합니다.

    • 컨트롤의 데이터 바인딩된 속성 값이 변경될 때 데이터 소스를 업데이트하려면 OnPropertyChanged를 선택합니다.

      참고

      Word에서는 문서 변경 알림이나 컨트롤 변경 알림을 제공하지 않으므로 OnPropertyChanged 옵션은 Word 호스트 컨트롤에는 적용되지 않습니다. 그러나 Word 문서의 Windows Forms 컨트롤에는 이 옵션을 사용할 수 있습니다.

  6. 서식 지정 및 고급 바인딩 대화 상자를 닫습니다.

데이터베이스 업데이트

메모리 내의 데이터 소스가 데이터베이스에 연결되어 있는 경우에는 데이터 소스의 변경 내용으로 데이터베이스를 업데이트해야 합니다. 데이터베이스 업데이트에 대한 자세한 내용은 데이터 집합에 데이터 저장방법: TableAdapter를 사용하여 데이터 업데이트를 참조하십시오.

데이터베이스를 업데이트하려면

  1. 컨트롤에 대한 BindingSourceEndEdit 메서드를 호출합니다.

    BindingSource는 디자인 타임에 데이터 바인딩된 컨트롤을 문서나 통합 문서에 추가하면 자동으로 생성됩니다. BindingSource는 컨트롤을 프로젝트의 형식화된 데이터 집합에 연결합니다. 자세한 내용은 BindingSource 구성 요소 개요를 참조하십시오.

    다음 코드 예제에서는 프로젝트에 customersBindingSource라는 BindingSource가 있는 것으로 가정합니다.

    Me.CustomersBindingSource.EndEdit()
    
    this.customersBindingSource.EndEdit();
    
  2. 프로젝트에서 생성된 TableAdapter의 Update 메서드를 호출합니다.

    TableAdapter는 디자인 타임에 데이터 바인딩된 컨트롤을 문서나 통합 문서에 추가하면 자동으로 생성됩니다. TableAdapter는 프로젝트의 형식화된 데이터 집합을 데이터베이스에 연결합니다. 자세한 내용은 TableAdapter 개요를 참조하십시오.

    다음 코드 예제에서는 Northwind 데이터베이스의 Customers 테이블에 연결되어 있고 프로젝트에 customersTableAdapter라는 TableAdapter와 northwindDataSet라는 형식화된 데이터 집합이 들어 있는 것으로 가정합니다.

    Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
    
    this.customersTableAdapter.Update(this.northwindDataSet.Customers);
    

참고 항목

작업

방법: TableAdapter를 사용하여 데이터 업데이트

방법: 워크시트에서 데이터베이스 레코드 스크롤

방법: 데이터베이스의 데이터로 워크시트 채우기

방법: 개체의 데이터로 문서 채우기

방법: 데이터베이스의 데이터로 문서 채우기

방법: 서비스의 데이터로 문서 채우기

개념

데이터 집합에 데이터 저장

기타 리소스

Office 솔루션의 컨트롤에 데이터 바인딩