2009-08-17 8 views
0

다음과 같은 상황이 발생합니다. 양식이로드되고 검색된 데이터가 DataTable을 통해 DataGridView에 채워질 때 쿼리되는 테이블이 DB에 있습니다. 데이터가로드 된 후 사용자는 자유롭게 데이터를 수정할 수 있습니다 (행 추가/삭제, 항목 수정).DataGridView (DataTable)를 DB로 동기화

양식에 ApplyRefresh의 두 개의 버튼이 있습니다. 첫 번째 변경 사항은 데이터베이스에 변경 사항을 보내고 두 번째 변경 사항은 DB에서 데이터를 다시 읽고 사용자가 변경 한 내용을 지 웁니다.

내 질문은 : DataGridView를 (사용자 관점에서) DB와 동기화 된 상태로 유지하는 가장 좋은 방법입니까?

는 지금 이러한 단점은 다음과 같습니다

  1. 사용자가 자신이 무엇을하고 있는지를 추적해야
  2. 수정이 손실됩니다 모든 동안 버튼을 눌러야 양식이 닫혀있는 경우/응용 프로그램 충돌/...

CellEndEdit 이벤트에서 DB에 변경 사항을 보내려고했으나 사용자에게 일부 실행 취소/다시 실행 기능이 필요하지만 그게 ... 다른 이야기입니다.

그래서 어떤 제안이 필요합니까?

답변

1

나는 당신이 현재하고있는 방식이 좋다고 말할 것입니다. 사용자가 편집을 수행하는 동안 데이터베이스를 업데이트하기 시작하면 사용자가 궁극적으로 변경하지 않을 것으로 결정한 사항을 업데이트하거나 수정하는 문제로 실행할 수 있습니다. 또한 데이터베이스 호출 수를 크게 늘릴 수 있습니다.

사용자가 적용을 클릭하도록 강요하면 실제로 사용자가 원하는 변경 사항 만 데이터베이스로 전송됩니다.

응용 프로그램을 적용하기 전에 응용 프로그램이 손상된 경우 변경 사항을 잃어 버리는 경우 응용 프로그램이 충돌하는 이유에 대해 더 많은 우려가 있습니다.

+0

감사합니다. 이것이 최선의 방법이라고 생각합니다. –

0

유일하게 기억해야 할 점은 데이터를 저장하기 전에 데이터를 다시 가져와 다시 가져온 데이터가 원래 사용자에게 표시 한 데이터와 일치해야한다는 것입니다. 그렇지 않은 경우 다른 사용자가 변경 한 내용을 사용자가 모르는 채 덮어 쓰게됩니다. 귀하의 사용자는 아마 그것을 좋아하지 않을 것입니다.

이 문제를 어떻게 처리할지는 클라이언트가 데이터베이스에서 필요로하는 것에 따라 다릅니다.