Почему привязка данных не запоминает старые значения? - PullRequest
1 голос
/ 03 октября 2010

У меня есть классический ObjectDataSource и ListView на моей странице. Представление «Список» просто отображает некоторые данные и при переключении на редактирование шаблона позволяет пользователю изменять значения. Я хочу, чтобы пользователь редактировал только некоторые значения - поэтому я связываю только эти значения в шаблоне редактирования.

Проблема в том, что другие значения внезапно превращаются в нули или 0. Я пытался связать все значения сразу, и это прекрасно работает, но я не могу понять, почему старые / оригинальные значения просто исчезают. Есть ли способ, как связать старые значения?

Спасибо за помощь.

1 Ответ

1 голос
/ 03 октября 2010

Проблема в том, что в обратной передаче будут доступны только те данные, которые включены в обратную передачу на сервер. Это включает в себя все, что связано с BoundFields, TemplateFields или если имя свойства включено в DataKey (или DataKeyNames, сейчас не знаю).

Лучший способ исправить это и свести к минимуму накладные расходы - добавить ваш первичный ключ в коллекцию DataKeyNames. Это позволяет вам иметь доступ к вашему пользовательскому объекту, который содержит уникальный идентификатор и все свойства, которые только что изменились.

В вашем методе обновления ODS (в вашем пользовательском классе) вам теперь нужно извлечь старый объект по его уникальному идентификатору, вручную присвоить новые значения и сохранить ваш объект обратно в базу данных

...