VB.NET WinForms 프로젝트에서 datagridview를 데이터 집합으로 채 웁니다. 사용자가 버튼을 클릭하면 DGV에 새로운 행이 있는지 확인해야하며, 그렇다면 데이터베이스에 삽입 할 행 모음을 가져와야합니다. (DGV 속성 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
CaseyWilkins가 비슷한 문제 here을 도와주었습니다. 내가
If dgvEmployees.IsCurrentRowDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
을 시도하지만 그것을하지 않았다 비추어
If dgvEmployees.IsCurrentCellDirty Then
dgvEmployees.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
:이 경우, 변경된 셀에 초점을두고이 코드를 추가 할 필요.
"작동하려면 새 행을 클릭해야합니다"라는 지침을 잘 포함 할 수 없습니다! :)
그건 다 끝났어. 좀 더 연구가 필요했지만, 나는 그것을 발견했다. 내 대답을 보라. – marky