Создание нескольких копий связанного с данными объекта из DataGridView - как их отделить? - PullRequest
0 голосов
/ 19 мая 2009

У меня есть объект DataGridView, к которому я привязал список объектов (типа Asset), возвращаемых из запроса к базе данных.

Я программирую на VB, используя Visual Studio 2005.

Я хочу получить две копии связанного объекта (называя их oldAsset и newAsset) из выбранной строки в DataGridView, обновить newAsset на основе входных данных из других элементов управления в форме и передать как 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 указывает на то, что в этот момент извлекаются соответствующие значения. Но когда я пытаюсь изменить свойство просто newAsset, например

newAsset.CurrentLocationID = cboLocations.SelectedValue

Я вижу, что соответствующее значение в oldAsset также изменилось. Это не то, что я хочу, но это, очевидно, то, что я приказываю компьютеру делать.

Как мне сказать компьютеру делать то, что я хочу?

Заранее спасибо!

1 Ответ

1 голос
/ 20 мая 2009

Узнал что не так. Связывание данных вообще не было.

newAsset и oldAsset были мелкими копиями. Я хотел глубокие копии.

Я реализовал ICloneable, написал функцию Clone (), которая выполняла копирование по элементам, и написал

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