在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