HOW TO:從主控制項中使用資料更新資料來源
您可以將主控制項繫結至資料來源,並以在控制項中對資料所做的變更來更新資料來源。 這項程序中有兩個主要步驟:
以控制項中修改的資料更新記憶體中資料來源。 一般而言,記憶體中資料來源是 DataSet、DataTable,或其他一些資料物件。
以記憶體中資料來源內變更的資料更新資料庫。 這個動作只有在資料來源是連接至後端資料庫 (例如,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 的 NamedRange 控制項,而且控制項的 Value2 屬性已繫結至資料來源中的欄位。
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。
注意事項 System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged 選項不適用於 Word 主控制項,因為 Word 不提供文件變更或控制項變更通知。 不過,這個選項可以用在 Word 文件上的 Windows Form 控制項。
下列範例會將 NamedRange 控制項設定為只要控制項中的值一變更就自動更新資料來源。 這個範例假設您有名為 namedRange1 的 NamedRange 控制項,而且控制項的 Value2 屬性已繫結至資料來源中的欄位。
Me.NamedRange1.DataBindings("Value2").DataSourceUpdateMode = _ DataSourceUpdateMode.OnPropertyChanged
this.namedRange1.DataBindings["Value2"].DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
若要使用設計工作將控制項設定成自動更新記憶體中資料來源
在 Visual Studio 中,以設計工具開啟 Word 文件或 Excel 活頁簿。
按一下您要使其自動更新資料來源的控制項。
在 [屬性] 視窗中展開 [(DataBindings)] 屬性。
按一下 [(Advanced)] 屬性旁邊的省略符號按鈕 ()。
在 [格式化與進階繫結] 對話方塊中,按一下 [資料來源更新模式] 下拉式清單,然後選取下列其中一個值:
若要在驗證控制項時更新資料來源,請選取 [OnValidation]。
若要在控制項的資料繫結屬性值變更時更新資料來源,請選取 [OnPropertyChanged]。
注意事項 [OnPropertyChanged] 選項不適用於 Word 主控制項,因為 Word 不提供文件變更或控制項變更通知。 不過,這個選項可以用在 Word 文件上的 Windows Form 控制項。
關閉 [格式化和進階繫結] 對話方塊。
更新資料庫
如果記憶體中資料來源與某個資料庫具有關聯,您就必須以該資料來源的變更來更新這個資料庫。 如需更新資料庫的詳細資訊,請參閱儲存資料集中的資料和 HOW TO:使用 TableAdapter 更新資料。
若要更新資料庫
呼叫控制項之 BindingSource 的 EndEdit 方法。
在設計階段將資料繫結控制項加入至文件或活頁簿時,就會自動產生 BindingSource。 BindingSource 會將控制項連接至專案中的具型別資料集。 如需詳細資訊,請參閱 BindingSource 元件概觀。
下列程式碼範例假設專案包含名為 customersBindingSource 的 BindingSource。
Me.CustomersBindingSource.EndEdit()
this.customersBindingSource.EndEdit();
呼叫產生於專案中之 TableAdapter 的 Update 方法。
在設計階段將資料繫結控制項加入至文件或活頁簿時,就會自動產生 TableAdapter。 TableAdapter 會將專案中的具型別資料集連接至資料庫。 如需詳細資訊,請參閱 TableAdapter 概觀。
下列程式碼範例假設您已連接到 Northwind 資料庫中的 Customers 資料表,而且專案包含名為 customersTableAdapter 的 TableAdapter 以及名為 northwindDataSet 的具型別資料集。
Me.CustomersTableAdapter.Update(Me.NorthwindDataSet.Customers)
this.customersTableAdapter.Update(this.northwindDataSet.Customers);