【发布时间】:2014-11-20 21:34:26
【问题描述】:
在 VB.NET WinForms 项目中,我有一个由数据集填充的 datagridview。当用户单击按钮时,我需要检查 DGV 中是否有任何新行,如果有,则获取要插入数据库的行集合。 (我将 DGV 属性 AllowUserToAddRows 设置为 True,因此 DGV 底部有一行。)
我最接近于任何进展的是以下内容,这给了我好坏参半的结果。代码确实会从新行中获取值 - 但前提是用户点击了新行。如果焦点没有离开新行,就好像该行没有被添加到新行的幕后集合中。 (点击退出然后返回新行有效)。
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
CaseyWilkins 帮助我解决了类似的问题 here。在这种情况下,将焦点留在已更改的 单元格 中需要添加以下代码:
If dgvEmployees.IsCurrentCellDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
我试过了
If dgvEmployees.IsCurrentRowDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
但这并没有做到。
我不能很好地包含说明“您必须单击新行才能工作”! :)
【问题讨论】:
标签: vb.net winforms datagridview datagridviewrow