2010-02-23 3 views
1

Вот установкаУдаление параметра из DetailsView ItemUpdating

  • У меня есть DetailsView которого DataSource является ObjectDataSource.
  • ObjectDataSource имеет два метода, выбирает и обновляет, которые являются хранимыми процедурами, определенными в TableAdapter.
  • Хранимая процедура принимает 1 параметр - идентификатор записи - и возвращает поля, заполненные в DetailsView.
  • Хранимая процедура Update принимает три параметра - идентификатор записи и два поля данных.

Процесс выбора отлично работает.

Однако, когда я представить обновление, я получаю следующее сообщение об ошибке:

ObjectDataSource could not find a non-generic method Update that has parameters: [all 21 table columns]

Я пытаюсь только передать (3) необходимые поля для хранимой процедуры Update, но DetailsView, видимо, пытается для обновления, используя все поля, полученные от Select.

Я знаю, что я могу получить доступ к NewValues коллекции от DetailsViewUpdateEventArgs, но я не вижу способ удалить любого из параметров так, чтобы они соответствовали определению в хранимой процедуре, тем TableAdapter и ObjectDataSource.

Любые идеи?

ответ

0

Возможно, this tutorial может предоставить некоторое представление. Пока вы указываете свой метод обновления и параметры обновления в своем источнике данных, это должно работать нормально.

+0

Хорошо, мы направляемся в правильном направлении. В учебнике, с которым связан Aaron, я нашел следующее: «Чтобы ObjectDataSource вызывал перегрузку [correct] UpdateProduct ..., нам нужно ограничить GridView доступными для редактирования полями только для ProductName и UnitPrice. выполняется путем удаления других BoundFields и CheckBoxFields, установив для этих других полей свойство ReadOnly значение true или некоторую комбинацию из двух. " – dneaster3

+0

Теперь проблема в том, что все поля в моем DetailsView являются TemplateFields, и у них нет свойства ReadOnly. Просто удаление EditItemTemplate не сработало, и я не могу в этом случае полностью удалить поля во время DetailsViewMode.Edit. Поэтому, хотя я больше понимаю процесс, я до сих пор не убедил .NET использовать правильный метод обновления. – dneaster3

0

На данный момент я смог решить проблему, просто удалив ненужные значения из коллекции NewValues в DetailsViewUpdateEventArgs. Однако это не оптимально, так как я добавил еще одну точку отказа, если есть изменения в хранимой процедуре или форме.

Я все еще хотел бы знать, можно ли установить TemplateField так, чтобы BoundField мог (см. Комментарии ниже ответа Аарона).

Смежные вопросы