Режим редактирования извлекает все записи из SelectMethod по умолчанию в ObjectDataSource после фильтрации записей в альтернативном SelectMethod - PullRequest
0 голосов
/ 01 марта 2012

Я знаю, что кто-то захочет получить код для этой проблемы, но верстка для Gridview, Object Data Source и всех связанных с ним событий, а также для связанных бизнес-объектов - это слишком много, независимо от того, как я могу сжать его,Однако я думаю, что на этот вопрос все еще можно ответить.

У меня есть ObjectDataSource, связанный с Gridview ASP.NET, и метод SelectMethod по умолчанию с именем GetALLNames .Этот метод, скажем, возвращает 100 записей по умолчанию и привязывает их к GridView.

Однако на этой странице у меня есть кнопка «Поиск» (вне сетки), где пользователь может выбрать одно имя и нажать «Поиск».».Кнопка «Поиск» изменяет .SelectMethod на GetNameByID , возвращает список и связывает короткий отфильтрованный список с Gridview.Это тоже прекрасно работает, так как GridView содержит только 1 запись.

Теперь проблема, когда я нажимаю кнопку Редактировать на этом GridView, чтобы перейти в режим редактирования на одной записи, показывающейПохоже, что источник данных объекта перезапускает ВСЕ записи из метода GetALLNames по умолчанию через кеш (у меня на ODS EnableCaching="True").Результат?GridView действительно переходит в режим редактирования, но для 1-й записи из 100 оригиналов и не * в режим редактирования на одной отфильтрованной записи.

IsЕсть ли способ предотвратить повторное извлечение ODS из этого списка по умолчанию из Cache или от вызова оригинального метода GetALLNames , и вместо этого просто перейти в режим редактирования для отдельной записи?

Спасибо!

1 Ответ

0 голосов
/ 27 июля 2012

Подобная проблема на некоторое время поставила меня в тупик.В конце концов, мне показалось, что свет стал следующим:

Элемент управления ObjectDataSource создает и уничтожает экземпляр класса для каждого вызова метода;он не удерживает объект в памяти в течение всего времени существования веб-запроса.

В моем случае объект ODS полагался на свойство, устанавливаемое до вызова метода select (то есть ODS.partNumber="123"затем ODS.getPart).

Чтобы заставить ODS функционировать правильно, мне пришлось заполнить обязательные свойства объекта в связанных обработчиках _RowEditing, _RowUpdating и _RowCancellingEdit соответствующего GridView.Таким образом, когда объект ODS был перестроен при нажатии любой из этих кнопок в GridView, были установлены все необходимые свойства.

Это может не применяться точно точно так же в вашем случае, но это может быть связано.

...