共用方式為


使用 Windows Form DataGridView 控制項中用於新增資料錄的資料列

當您使用 DataGridView 來編輯應用程式中的資料時,您通常會想要讓使用者能夠在資料存放區中新增資料列。 控制項 DataGridView 支援這項功能,方法是提供新記錄的資料列,這一律會顯示為最後一個資料列。 它會在其資料列標頭中標示星號 \ 符號。 下列各節將討論當您使用已啟用新記錄之資料列進行程式設計時,應考慮的一些事項。

顯示新記錄的資料列

AllowUserToAddRows使用 屬性來指出是否顯示新記錄的資料列。 此屬性的預設值為 true

針對資料系結案例,如果 AllowUserToAddRows 控制項的 屬性和 IBindingList.AllowNew 資料來源的 屬性都是 true ,則會顯示新記錄的資料列。 如果其中一個為 false ,則不會顯示資料列。

使用預設資料填入新記錄的資料列

當使用者選取新記錄的資料列做為目前資料列時, DataGridView 控制項會 DefaultValuesNeeded 引發 事件。

此事件可讓您存取新的 DataGridViewRow ,並可讓您使用預設資料填入新的資料列。 如需詳細資訊,請參閱 如何:在 Windows Forms DataGridView 控制項中指定新資料列的預設值

Rows 集合

新記錄的資料列包含在控制項的 Rows 集合中 DataGridView ,但在兩個方面的行為不同:

新記錄之資料列的視覺自訂

建立新記錄的資料列時,它會根據 屬性所 RowTemplate 指定的資料列。 未為此資料列指定的任何儲存格樣式都會繼承自其他屬性。 如需儲存格樣式繼承的詳細資訊,請參閱 Windows Forms DataGridView 控制項 中的儲存格樣式。

從每個儲存格的 DefaultNewRowValue 屬性擷取新記錄資料列中儲存格所顯示的初始值。 針對 類型的 DataGridViewImageCell 儲存格,此屬性會傳回預留位置影像。 否則,這個屬性會傳 null 回 。 您可以覆寫此屬性以傳回自訂值。 不過,當焦點輸入新記錄的資料列時,這些初始值可以由 DefaultValuesNeeded 事件處理常式取代。

此資料列標頭的標準圖示,也就是箭號或星號,不會公開。 如果您想要自訂圖示,您必須建立自訂 DataGridViewRowHeaderCell 類別。

標準圖示會使用 ForeColor 資料列標頭儲存格所使用的 屬性 DataGridViewCellStyle 。 如果沒有足夠的空間可以完全顯示標準圖示,則不會轉譯這些圖示。

如果資料列標頭儲存格已設定字串值,而且文字和圖示沒有足夠的空間,則會先卸載圖示。

排序

在未系結模式中,即使使用者已排序 的內容 DataGridView ,新記錄一律會新增至 的結尾 DataGridView 。 使用者必須再次套用排序,才能將資料列排序到正確的位置;此行為類似于 控制項的行為 ListView

在資料系結和虛擬模式中,套用排序時的插入行為將取決於資料模型的實作。 針對 ADO.NET,資料列會立即排序為正確的位置。

新記錄之資料列的其他附注

您無法將此資料列的 屬性設定 VisiblefalseInvalidOperationException如果嘗試這樣做,就會引發 。

新記錄的資料列一律會以未選取的狀態建立。

虛擬模式

如果您要實作虛擬模式,則必須追蹤資料模型中需要新記錄的資料列,以及何時回復新增資料列的時間。 這項功能的確切實作取決於資料模型及其交易語意的實作,例如,認可範圍是在資料格或資料列層級。 如需詳細資訊,請參閱 Windows Forms DataGridView 控制項 中的虛擬模式。

另請參閱