在VB.NET WinForms項目中,我有一個由數據集填充的datagridview。當用戶點擊一個按鈕時,我需要檢查DGV中是否有新行,如果是,請獲取要插入數據庫的行集合。 (我將DGU屬性AllowUserToAddRows設置爲True,因此DGV底部有一行。)檢查是否新行添加到DataGridView,如果是,獲取新行的集合
最接近我可以進展的是以下內容,這給了我不同的結果。該代碼確實從新行中獲取了值 - ,但前提是用戶已經點擊了新行。如果焦點沒有離開新行,就好像該行沒有被添加到新行的後臺集合構建中。 (點擊,然後回到新行工作)。
If EmployeesDataSet.HasChanges(DataRowState.Modified Or DataRowState.Added) Then
Dim changesDataSet As DataSet = EmployeesDataSet.GetChanges(DataRowState.Modified Or DataRowState.Added)
Dim changesTable As DataTable
For Each changesTable In changesDataSet.Tables
Console.WriteLine("TableName: " & changesTable.TableName)
For Each row As DataRow In changesTable.Rows
Dim column As DataColumn
For Each column In changesTable.Columns
Console.Write("Value: " & row(column).ToString() & ControlChars.Tab & ", ")
Next column
Console.WriteLine()
Next
Next
End If
凱西威爾金斯幫我解決了類似問題here。在這種情況下,剩下的重點在改變細胞需要添加以下代碼:
If dgvEmployees.IsCurrentCellDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
在光我試圖
If dgvEmployees.IsCurrentRowDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
,但沒有做到這一點。
我不能很好地包含說明「你必須點擊新行才能工作」! :)
這很接近 - 它花了我多一點研究,但我找到了 - 看到我的答案。 – marky 2014-11-21 16:48:49