ObjectDataSource и FormView: как добавить поведение редакции пользовательского интерфейса из бизнес-уровня

Я использую ObjectDataSource и FormView.

В FormView у меня есть набор элементов управления. Когда FormView находится в редакции, у меня есть, в частности, ComboBox и TextBox, которые связаны следующим образом: когда ComboBox принимает некоторые специальные значения, TextBox должен быть доступен только для чтения или нет.

На данный момент я получаю такое поведение следующим образом: ComboBox запускает обратную передачу, когда его выбранный элемент изменяется, а в «OnPreRender» моей страницы я получаю значение ComboBox и соответствующим образом обновляю свойство Readonly TextBox.

Что мне не нравится в этом методе, так это то, что я не использую свою объектную модель, которая используется ObjectDataSource. Проблема просто в том, что когда FormView находится в редакции, похоже, нет способа получить экземпляр редактируемого объекта. DataItem имеет значение null, и я не нашел способа автоматически создать новый объект из значений в элементах управления, чтобы передать его моему бизнес-уровню. Конечно, я мог бы выполнить всю работу сам, явно получив все значения в элементах управления, но это нехорошо.

Кто-нибудь встречал такой сценарий? Есть идеи, как получить чистый дизайн?


person Thierry    schedule 03.11.2010    source источник


Ответы (1)


Как насчет использования DataItemIndex или DataKey? Я бы, вероятно, использовал DataKey, а затем использовал бы бизнес-метод для поиска объекта для ключа.

person VinayC    schedule 03.11.2010
comment
Да, но я получу объект без постоянных изменений, внесенных пользователем. И чтобы получить эти изменения, мне нужно будет прочитать данные во всех элементах управления, например, myBusinessObject.Property1 = controlX.Text; myBusinessObject.Property2 = controlY.SelectedValue; .... Было бы здорово, если бы у меня был автоматический способ делать это. - person Thierry; 03.11.2010