使用主控件的數據更新數據來源

您可以將主控制項繫結至資料來源,並以在控制項中對資料所做的變更來更新資料來源。 這個程序包含兩個主要步驟:

  1. 以控制項中修改的資料更新記憶體內部資料來源。 一般而言,記憶體內部資料來源是 DataSetDataTable或其他一些資料物件。

  2. 以記憶體內部資料來源中變更的資料更新資料庫。 只有在資料來源已連接到 SQL Server 或 Microsoft Office Access 資料庫等後端資料庫時才適用。

    如需主控件和數據系結的詳細資訊,請參閱 主專案和主控件概觀將數據系結至 Office 方案中的控件。

    適用於: 本主題中的資訊適用於 Excel 和 Word 的文件層級專案和 VSTO 載入宏專案。 如需詳細資訊,請參閱 Office 應用程式 lication 和項目類型所提供的功能。

更新記憶體內部數據源

根據預設,啟用簡單資料繫結的主控制項 (Word 文件上的內容控制項或 Excel 工作表上的具名範圍控制項),不會將資料變更儲存至記憶體內部資料來源。 也就是說,當使用者變更主控制項中的值,並接著移動離開該控制項時,這個控制項中的新值並不會自動儲存至資料來源。

若要將資料儲存至資料來源,您可以撰寫可在執行階段回應特定事件而更新資料來源的程式碼,或是將控制項設定為只要控制項中的值一變更就自動更新資料來源。

您不需要將 ListObject 變更儲存至記憶體內部資料來源。 當您將 ListObject 控制項繫結至資料時, ListObject 控制項會自動將變更儲存至記憶體內部資料來源,而不需要其他程式碼。

在執行階段更新記憶體內部資料來源

  • 呼叫 WriteValue 物件的 Binding 方法,將控制項繫結至資料來源。

    下列範例會將對 Excel 工作表上 NamedRange 控制項所做的變更儲存至資料來源。 這個範例假設您有名為 NamedRangenamedRange1 控制項,而且控制項的 Value2 屬性已繫結至資料來源中的欄位。

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

自動更新記憶體內部數據源

您也可以設定控制項,讓它自動更新記憶體內部資料來源。 在文件層級專案中,您可以使用程式碼或設計工具來執行這項作業。 在 VSTO 載入宏專案中,您必須使用程式代碼。

使用程式碼將控制項設定為自動更新記憶體內部資料來源

  1. 使用將控件系結至數據源之物件的 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 模式 Binding 。 您可以使用兩種選項來更新資料來源:

    • 若要在驗證控件時更新數據源,請將此屬性設定為 System.Windows.Forms.DataSourceUpdateMode.OnValidation。

    • 若要在控件的數據綁定屬性值變更時更新數據源,請將此屬性設定為 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged。

      注意

      System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 選項不適用於 Word 主控件,因為 Word 不提供文件變更或控件變更通知。 不過,這個選項可用於 Word 文件上的 Windows Form 控制項。

      下列範例會將 NamedRange 控制項設定為只要控制項中的值一變更就自動更新資料來源。 這個範例假設您有名為 NamedRangenamedRange1 控制項,而且控制項的 Value2 屬性已繫結至資料來源中的欄位。

      this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = 
          DataSourceUpdateMode.OnPropertyChanged;
      

使用設計工具將控制項設定為自動更新記憶體內部資料來源

  1. 在 Visual Studio 中,以設計工具開啟 Word 文件或 Excel 活頁簿。

  2. 按一下您要自動更新資料來源的控制項。

  3. 在 [屬性] 視窗中,展開 [(DataBindings)] 屬性。

  4. 按一下 [(進階)] 屬性旁的省略符號按鈕 (VisualStudioEllipsesButton screenshot)。

  5. 在 [格式化與進階繫結] 對話方塊中,按一下 [資料來源更新模式] 下拉式清單,然後選取下列其中一個值:

    • 若要在驗證控制項時更新資料來源,請選取 [OnValidation]

    • 若要在控制項的資料繫結屬性值變更時更新資料來源,請選取 [OnPropertyChanged]

      注意

      [OnPropertyChanged] 選項不適用於 Word 主控制項,因為 Word 不提供文件變更或控制項變更通知。 不過,這個選項可用於 Word 文件上的 Windows Form 控制項。

  6. 關閉 [格式化與進階繫結] 對話方塊。

更新資料庫

如果資料庫與記憶體內部資料來源相關聯,您必須以對資料來源所做的變更來更新資料庫。 如需更新資料庫的詳細資訊,請參閱使用 TableAdapter 將數據儲存回資料庫和更新數據。

若要更新資料庫

  1. 呼叫控制項之 EndEditBindingSource 方法。

    當您在設計階段將資料繫結控制項加入文件或活頁簿時,會自動產生 BindingSourceBindingSource 會將控制項連接到專案中的具類型資料集。 如需詳細資訊,請參閱 BindingSource 元件概觀

    下列程式碼範例假設您的專案包含名為 BindingSourcecustomersBindingSource

    this.customersBindingSource.EndEdit();
    
  2. Update在您的專案中呼叫產生的 TableAdapter 方法。

    當您在設計時間將數據綁定控件新增至檔或活頁簿時,會自動產生 TableAdapter。 TableAdapter 會將專案中具類型的數據集連接到資料庫。 如需詳細資訊,請參閱 TableAdapter 概觀

    下列程式代碼範例假設您已連線到 Northwind 資料庫中的 Customers 數據表,而且您的專案包含名為 customersTableAdapter 的 TableAdapter,以及名為 的 northwindDataSet具型別數據集。

    this.customersTableAdapter.Update(this.northwindDataSet.Customers);