2009-05-19 5 views
0

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

Я программирования в 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

Обнаружено, что не так. Совсем не было привязки данных.

новые модели и старые комплекты были мелкой копией. Мне нужны были глубокие копии.

Я реализовал ICloneable, написал Clone() функцию, что сделал почленно копию, и написал

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