2009-05-19 3 views
0

私は、データベースクエリから返された(Assetタイプの)オブジェクトのリストをバインドしたDataGridViewオブジェクトを持っています。DataGridViewからデータバインドされたオブジェクトの複数のコピーを作成する - それらをどのようにデカップリングするのですか?

私はVBでのプログラミングは、Visual Studioの私がバインドされたオブジェクトの2つのコピーをつかむしたい2005年

を使用していたDataGridViewで選択された行から(彼らにoldAssetとnewAssetを呼び出す)、newAssetを更新からの入力に基づいて、フォーム上の他のコントロールを削除し、oldAssetとnewAssetの両方をDB内の適切なレコードを更新する関数に渡します。私はこのような二つのコピーをつかむしようとし

:oldAssetとnewAssetのウォッチウィンドウを開く

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

は、適切な値は、この時点で引っ張っていることを示しています。しかし、私はoldAssetの対応する値も変更されていることがわかり

newAsset.CurrentLocationID = cboLocations.SelectedValue 

のように、ちょうどnewAssetのプロパティを変更しようとします。これは私の望むものではありませんが、明らかに私がコンピュータにすることです。

私はコンピュータに自分がしたいことをするように指示しますか?

ありがとうございます!

答えて

1

何が間違っているかを発見しました。データバインディングはまったくありませんでした。

newAssetとoldAssetはシャローコピーです。私は深いコピーが欲しかった。

私は、ICloneableを実装memberwiseコピーをしたクローン()関数を書き、

Dim oldAsset As Asset 
    oldAsset = currentRow.DataBoundItem 
    Dim newAsset As Asset = oldAsset.Clone() 
を書きました
関連する問題