2012-11-08 5 views
1

데이터를 편집/추가/삭제할 수있는 DataGridView로 데이터를로드 할 프로그램이 있습니다. 사용자가 양식을 닫으면 변경 사항이 있으면 사용자가 변경 사항을 데이터베이스에 저장할지 묻는 메시지가 표시됩니다.DataGridView가 예상대로 작동하지 않는 변경을 감지합니다.

그래서 DataGridView의 DataSource에로드하고 할당 한 DataTable이 있습니다. 그런 다음 테이블 내의 데이터를 변경할 수 있으며 DataSet.Update 메서드를 호출하면 업데이트됩니다.

그러나 DataTable.GetChanges 메서드를 호출하고 변경 사항을 확인하면 DataGridView의 현재 행에서 탭/클릭/아무 것이나 (어떤 경우에는 .GetChanges가 작동하는지) 않는 한 아무 것도 얻지 못합니다. 행이 포커스를 잃지 않는 한 변경 사항이 DataTable에 커밋되지 않는다고 생각합니다.

DataGridView에서 셀이 변경되었는지 또는 행을 탭 해제하지 않고 변경 내용을 커밋하는 방법을 확인하는 방법이 있습니까?

다시 GridView의 행을 변경하지 않으면이 작업은 실패하지만 그렇지 않으면 작동하지 않습니다. 두 가지 상황에서 모두 작동하기를 원합니다.

Dim changedRows As New DataTable() 
    changedRows = dtInfo.GetChanges(DataRowState.Modified Or DataRowState.Added Or DataRowState.Deleted) 
    If Not changedRows Is Nothing Then 
    .... 
    End If 
+1

"And"가 아니라 "Or"를 원하지 않습니까? –

+0

네, 코드를 복사했을 때 효과가 있지만 바뀌지 않았 으면 좋겠다고 바꿨습니다. 오르와 같은 결과. 업데이트 질문 ... – APrough

답변

1

당신은 Form.ValidateChildren 메서드를 호출 할 수 있습니다,이 유효성을 검사하고 DataGridView를 포함하는 형태로 모든 컨트롤을 커밋합니다. 이 메소드는 검증 에러가 있으면 false를 리턴합니다.

+0

친절하게 감사드립니다. 매력처럼 작동했습니다. – APrough

관련 문제