2009-05-19 17 views
0

Ich habe ein DataGridView-Objekt, an das ich eine Liste von Objekten (vom Typ Asset) gebunden habe, die von einer Datenbankabfrage zurückgegeben wurden.Mehrere Kopien eines datengebundenen Objekts aus einer DataGridView erstellen - wie entkoppeln?

Ich bin Programmierung in VB mit Visual Studio 2005.

ich zwei Kopien des gebundenen Objekts greifen will aus der ausgewählten Zeile in der Datagridview (sie oldAsset und newAsset Aufruf), newAsset aktualisiert basierend auf einer Eingabe von andere Steuerelemente auf dem Formular und übergeben Sie sowohl OldAsset und NewAsset an eine Funktion, die den entsprechenden Datensatz in der DB aktualisiert.

Ich versuche, die zwei Kopien wie diese zu greifen:

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

eine Uhr Fenster auf oldAsset und newAsset Öffnen zeigt an, dass die entsprechenden Werte an dieser Stelle gezogen werden. Aber wenn ich versuche, eine Eigenschaft zu ändern, nur newAsset, wie

newAsset.CurrentLocationID = cboLocations.SelectedValue 

Ich sehe, dass der entsprechende Wert in oldAsset wird ebenfalls geändert. Das ist nicht das, was ich will, aber es ist offensichtlich, was ich dem Computer sage.

Wie sage ich dem Computer, was er will?

Vielen Dank im Voraus!

Antwort

1

herausgefunden, was falsch war. Waren die Daten überhaupt nicht bindend?

newAsset und oldAsset waren flache Kopien. Ich wollte tiefe Kopien.

I umgesetzt ICloneable, schrieb ein Klon() Funktion, die die Kopie tat element und schrieb

Dim oldAsset As Asset 
    oldAsset = currentRow.DataBoundItem 
    Dim newAsset As Asset = oldAsset.Clone() 
Verwandte Themen