2012-03-01 2 views
0

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

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

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

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

Есть ли способ, чтобы предотвратить ОРВ из refetching из списка, что по умолчанию из кэша или от вызова оригинальной GetALLNames метода, и вместо того, чтобы просто перейти в режим редактирования на одной записи?

Спасибо!

ответ

0

Аналогичная проблема заставила меня немного задохнуться. Что, наконец, щелкнул свет для меня это утверждение:

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

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

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

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

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