2009-05-19 5 views
0

데이터베이스 쿼리에서 반환 된 개체 목록 (Asset 유형)을 바인딩 한 DataGridView 개체가 있습니다.DataGridView에서 데이터 바운드 객체의 복사본을 여러 개 만드는 방법 - 데이터를 결합하는 방법은 무엇입니까?

내가 VB 프로그래밍 비주얼 스튜디오 내가 바인딩 된 개체의 두 복사본을 잡아하고자 2005 년

를 사용 해요있는 DataGridView에서 선택된 행에서 (그들에게 oldAsset 및 newAsset를 호출), newAsset를 업데이트에서 입력을 기반으로 폼의 다른 컨트롤을 사용하고 oldAsset 및 newAsset을 DB의 적절한 레코드를 업데이트하는 함수로 전달합니다.

나는 다음과 같은 두 개의 복사본을 잡아하려고 :

Dim currentRow As DataGridViewRow = Me.AssetDataGridView.CurrentRow 
Dim newAsset As Asset 
newAsset = currentRow.DataBoundItem 
Dim oldAsset As Asset 
oldAsset = currentRow.DataBoundItem 

적절한 값이이 시점에서 당겨을 나타냅니다 oldAsset 및 newAsset에 시계 창을 엽니 다. 그러나 나는 oldAsset의 해당 값도 변경되는 것을 볼 수

newAsset.CurrentLocationID = cboLocations.SelectedValue 

처럼, 단지 newAsset의 속성을 변경하려고 할 때. 이것은 내가 원하는 것은 아니지만, 분명히 내가 컴퓨터에해야 할 말이다.

내가 원하는 것을 컴퓨터에 어떻게 말합니까?

미리 감사드립니다.

답변

1

무엇이 잘못되었는지 알아 냈습니다. 데이터 바인딩이 전혀되지 않았습니다.

newAsset 및 oldAsset은 얕은 사본입니다. 나는 깊은 사본이 필요했다.

나는, ICloneable을 구현 memberwise 사본을했던 클론() 함수를 쓰고,

Dim oldAsset As Asset 
    oldAsset = currentRow.DataBoundItem 
    Dim newAsset As Asset = oldAsset.Clone() 
을 썼다
관련 문제