2010-03-12 1 views
1

업데이트 할 기존 데이터 집합 코드가 있습니다. 데이터 집합에 변경 사항이 있는지 확인하여 저장 요청을 올바르게 요청할 수 있습니다. 그러나 myDataset.HasChanges()는 항상 true를 반환합니다. 라인 1 일 이후TableAdapter.Update가 실행 된 직후에도 DataSet.HasChanges가 true가됩니다.

1. myBindingSource.EndEdit() 
2. myTableAdapter.Update(myDataSet) 
3. myBindingSource.EndEdit() 

- myDataSet.HasChanges = 사실 (이해)
을 내 저장 방법에서

나는 경우 데이터 집합 GET의 변경을 결정하는 코드를 편집하고이 같은 코드를했습니다 2 호선, 후 - myDataSet.HasChanges = 거짓 (이해) 라인 3, 후
- myDataSet.HasChanges = 나는이 라인 3에서 발생 이유의 확실 해요

사실,이 허위 안 나는 때문에 데이터 세트에서 업데이트를 실행 했습니까?

답변

1

dataSet/dataTable에서 값이 변경되는 UI 요소가있을 수 있습니다.

DataBinding없이 간단한 consoleApplication에서 코드를 사용해보십시오.

+1

이 발생한다. "변경되었지만 변경되지 않은"이벤트를 발생시킨 데이터 바인딩 된 항목 –

+0

@ NathanKoop 수정 사항을 파악 했습니까? 나는 똑같은 문제를 겪고있다. – styfle

+1

내가 정확히 기억한다면 (몇 년 전 이었음) Textbox.OnChange 이벤트가 발생하고 다른 텍스트 상자가 수정되어 데이터 집합이 변경된다고 생각합니다. –

1

TableAdapter가 데이터 집합을 새로 고 칩니 까? 그렇다면 초기화 된 키와 같은 것이있을 것입니다 (GUID == 양호, Int == 불량). TableAdapter에서 채울 때와 마찬가지로 모든 행의 상태를 변경하지 않고 AcceptChanges를 호출해야합니다.

+0

TableAdapter 새로 고침이 데이터인지 확실하지 않습니다. 그것이하는 일은 UPDATE ... WHERE id = @myId; 나는 거기에 (라인 2와 3 사이에) AcceptChanges를 추가하려고 시도했지만 여전히 같은 결과를 얻었습니다. 나는 int를 사용하고 있습니다 (db 디자인이 아니며 변경할 수 없습니다). 거기에 어떤 키가 초기화되어서는 안된다. 테스트중인 상황에서 폼을로드하고 (데이터 톤 등) ... 데이터를 변경하지 않고 저장 버튼을 누르면 –