Share via


將 Windows Forms 控制項繫結至 .NET Framework 應用程式中的資料

注意

資料集和相關類別是 2000 年代初的舊版 .NET Framework 技術,可讓應用程式在應用程式與資料庫中斷連線時使用記憶體中的資料。 它們特別適用於可讓使用者修改資料並將變更保存回資料庫的應用程式。 雖然已證明資料集是非常成功的技術,但建議新的 .NET 應用程式使用 Entity Framework Core。 Entity Framework 提供更自然的方式,將表格式資料作為物件模型使用,而且具有更簡單的程式設計介面。

您可藉由將資料繫結至 Windows Forms,對應用程式的使用者顯示資料。 若要建立這些資料繫結控制項,請將項目從 [資料來源] 視窗拖曳至 Visual Studio 中的 Windows Forms 設計工具。

Data Source drag operation

提示

如果看不到 [資料來源] 視窗,您可選擇 [檢視]>[其他視窗]>[資料來源],或按 Shift+Alt+D。 您必須在 Visual Studio 中開啟專案,才能看到 [資料來源] 視窗。

在拖曳項目之前,您可以設定要繫結的控制項類型。 視您選擇資料表本身或個別資料行而定,會出現不同的值。 您也可以設定自訂值。 對於資料表,[詳細資料] 表示每個資料行都繫結至個別的控制項。

Bind data source to DataGridView

BindingSource 和 BindingNavigator 控制項

BindingSource 元件有兩種用途。 首先,在將控制項繫結至資料時,它會提供一個抽象層。 表單上的控制項會繫結至 BindingSource 元件,而非直接繫結至資料來源。 其次,其可管理物件的集合。 將類型新增至 BindingSource,即可建立該類型的清單。

如需有關 BindingSource 元件的詳細資訊,請參閱:

BindingNavigator 控制項提供使用者介面,以便瀏覽 Windows 應用程式所顯示的資料。

繫結至 DataGridView 控制項中的資料

針對 DataGridView 控制項,整個資料表會繫結至該單一控制項。 當您將 DataGridView 拖曳至表單時,也會顯示用於瀏覽記錄的工具區域 (BindingNavigator)。 DataSetTableAdapterBindingSourceBindingNavigator 會出現在元件匣中。 在下圖中,也會新增 TableAdapterManager,因為 Customers 資料表與 Orders 資料表有關聯。 這些變數全都會在自動產生的程式碼中宣告為表單類別中的私密成員。 用於填入 DataGridView 的自動產生程式碼位於 Form_Load 事件處理常式中。 用於儲存資料以更新資料庫的程式碼位於 BindingNavigatorSave 事件處理常式中。 您可以視需要移動或修改此程式碼。

GridView with BindingNavigator

您可按一下各自右上角的智慧標籤,以自訂 DataGridViewBindingNavigator 的行為:

DataGridView and Binding Navigator smart tags

如果應用程式所需的控制項無法從 [資料來源] 視窗取得,您即可新增控制項。 如需詳細資訊,請參閱將自訂控制項新增至 [資料來源] 視窗

您也可以將項目從 [資料來源] 視窗拖曳至已在表單上的控制項,進而將控制項繫結至資料。 已繫結至資料的控制項,其資料繫結會重設為最近拖曳至它的項目。 若要成為有效的置放目標,控制項必須能夠顯示從 [資料來源] 視窗拖曳到該項目的基礎資料類型。 例如,將資料類型為 DateTime 的項目拖曳至 CheckBox 無效,因為 CheckBox 無法顯示日期。

繫結至個別控制項中的資料

當您將資料來源繫結至 [詳細資料]時,資料集中的每個資料行都會繫結至個別的控制項。

Bind data source to details

重要

請注意,在上圖中,您會從 Customers 資料表的 Orders 屬性拖曳,而不是從 Orders 資料表拖曳。 藉由繫結至 Customer.Orders 屬性,在 DataGridView 中建立的導覽命令會立即反映在詳細資料控制項中。 如果您從 Orders 資料表拖曳,控制項仍會繫結至資料集,但不會與 DataGridView 同步。

下圖顯示 Customers 資料表中 Orders 屬性繫結至 [資料來源] 視窗中的 [詳細資料] 之後,新增至表單的預設資料繫結控制項。

Orders table bound to details

另請注意,每個控制項都有智慧標籤。 此標籤可啟用僅適用於該控制項的自訂項目。