共用方式為


Windows Form DataGridView 控制項的資料顯示模式

DataGridView 控制項可以使用三種不同的模式來顯示資料:繫結、未繫結和虛擬。 根據您的需求選擇最適合的模式。

未繫結

未繫結模式適用於以程式設計方式顯示相對少量的資料。 您無法像在繫結模式中一樣,將 DataGridView 控制項直接連結至資料來源。 而您必須改為自行填入控制項,通常是使用 DataGridViewRowCollection.Add 方法。

未繫結模式特別適用於靜態、唯讀資料,或當您想要提供自己的程式碼與外部資料存放區互動時。 不過,當您想要讓使用者與外部資料源互動時,通常會使用繫結模式。

如需使用唯讀未繫結 DataGridView 的範例,請參閱如何:建立未繫結的 Windows Forms DataGridView 控製項

繫結

繫結模式適用於使用與資料存放區的自動互動來管理資料。 您可以藉由設定 DataSource 屬性,將控制項 DataGridView 直接連結至其資料來源。 當控制項已繫結資料時,系統會推送和提取資料列,無需您的明確管理。 當 AutoGenerateColumns 屬性是 true 時,資料來源中的每個資料行都會導致在控制項中建立相對應的資料行。 如果您要建立自己的資料行,可以將此屬性設定為 false,並在設定時使用 DataPropertyName 屬性來繫結每個資料行。 當您想要使用預設產生的類型以外的資料行類型時,這會很有用。 如需詳細資訊,請參閱 Windows Forms DataGridView 控制項中的資料行類型

如需使用繫結 DataGridView 控制項的範例,請參閱逐步解說:驗證 Windows Forms DataGridView 控制項中的資料

您也可以在繫結模式中將未繫結的資料行新增至 DataGridView 控制項。 當您想要顯示按鈕或連結的資料行,讓使用者可以對特定資料列執行動作時,這會很有用。 在顯示所含值係從繫結資料行導出的資料行時,也很有用。 您可以在 CellFormatting 事件的處理常式中填入這些導出資料行的儲存格值。 不過,如果您使用 DataSetDataTable 作為資料來源,則可以改用 DataColumn.Expression 屬性來建立導出資料行。 在此情況下,DataGridView 控制項會將導出資料行視為資料來源中的任何其他資料行。

不支援依繫結模式中的未繫結資料行排序。 如果您在繫結模式中建立包含使用者可編輯值的未繫結資料行,則必須實作虛擬模式,以便在控制項依繫結資料行排序時維護這些值。

網路

使用虛擬模式,您可以實作自己的資料管理作業。 當控制項依繫結資料行排序時,必須維持繫結模式中未繫結資料行的值。 不過,虛擬模式的主要用途是最佳化與大量資料互動時的效能。

您可以將 DataGridView 控制項連結至您所管理的快取,而您的程式碼會控制推送和提取資料列的時機。 為了保持低記憶體使用量,快取的大小應該與目前顯示的資料列數目類似。 當使用者在檢視中捲動新資料列時,您的程式碼會要求快取中的新資料,並選擇性地從記憶體中清除舊資料。

當您實作虛擬模式時,必須追蹤資料模型何時需要新資料列,以及何時必須復原新增的資料列。 這項功能的確切實作方式將取決於資料模型的實作和資料模型的交易語意;不論認可範圍是在資料格還是資料列層級。

如需虛擬模式的詳細資訊,請參閱 Windows Forms DataGridView 控制項中的虛擬模式。 如需示範如何使用虛擬模式事件的範例,請參閱逐步解說:在 Windows Forms DataGridView 控制項中實作虛擬模式

另請參閱