共用方式為


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

當您在應用程式中使用編輯資料的 DataGridView 時,通常會想提供使用者加入新資料列或資料行至資料存放區的能力。 DataGridView 控制項會藉由提供新資料錄的資料列來支援這項功能,此資料列永遠顯示為最後一列。 在資料列行首中,會以星號 (*) 符號做標記。 下列章節討論若您要在進行程式設計時啟用新資料錄的資料列,所應該考量的一些事項。

顯示新資料錄的資料列

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

針對資料繫結的情況,如果控制項的 AllowUserToAddRows 屬性和資料來源的 IBindingList.AllowNew 屬性都為 true,便會顯示新資料錄的資料列。 如果其中一個為 false,就不會顯示資料列。

將預設的資料填入新資料錄的資料列

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

這個事件提供對新 DataGridViewRow 的存取,並且讓您將預設的資料填入新資料列。 如需詳細資訊,請參閱 HOW TO:指定 Windows Form DataGridView 控制項新資料列的預設值

資料列集合

新資料錄的資料列是包含在 DataGridView 控制項的 Rows 集合中,但在行為上具有兩大方面的差異:

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

在建立新資料錄的資料列時,會依據由 RowTemplate 屬性所指定的資料列來進行。 任何不是指定給這個資料列的儲存格樣式,都是繼承自其他屬性。 如需儲存格樣式繼承的詳細資訊,請參閱 Windows Form DataGridView 控制項中的儲存格樣式

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

這個資料列行首的標準圖示 (箭號或星號) 並沒有公開 (Expose) 為公用圖示。 如果想要自訂圖示,就需要建立自訂的 DataGridViewRowHeaderCell 類別。

標準圖示使用由資料列行首儲存格所使用的 DataGridViewCellStyleForeColor 屬性。 若沒有足夠空間完整顯示標準圖示,就不會呈現標準圖示。

如果資料列行首儲存格具有字串值集,且如果沒有足夠空間供文字與圖示使用,便會先卸除圖示。

排序

在未繫結模式中,即便使用者已經排序 DataGridView 的內容,新資料錄仍一定會加入至 DataGridView 的結尾。 為了將資料列排序至正確的位置,使用者需要再次套用排序;這種行為與 ListView 控制項的行為類似。

在資料繫結與虛擬模式中,套用排序時的插入行為會根據資料模型的實作而定。 對於 ADO.NET,資料列則會馬上排序至正確的位置。

新資料錄的資料列的其他注意事項

您不能將此資料列的 Visible 屬性設定為 false。 如果嘗試這麼做,就會引發 InvalidOperationException

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

虛擬模式

如果您實作虛擬模式,就會需要追蹤在資料模型中需要新資料錄的資料列的時機,以及復原加入資料列的時機。 這項功能的精確實作是依據資料模型的實作和交易語意 (例如,認可範圍是否為儲存格或資料列層級) 而定。 如需詳細資訊,請參閱 Windows Form DataGridView 控制項中的虛擬模式

請參閱

工作

HOW TO:指定 Windows Form DataGridView 控制項新資料列的預設值

參考

DataGridView

DataGridView.DefaultValuesNeeded

其他資源

Windows Form DataGridView 控制項中的資料輸入