Изменение данных GridView с использованием Jquery не сохраняется обратно в события сервера - PullRequest
0 голосов
/ 17 июля 2009

Итак, у меня есть элемент управления ASP.NET GridView, в котором каждый столбец является «BoundField». Я не создавал TemplateField (ItemTemplate / EditItemTemplate), потому что я планировал использовать JQuery для преобразования строки BoundField в поле «Правка» путем простого преобразования текста в каждой ячейке в текстовое поле или текстовое поле при щелчке по этой строке. Это делается на стороне клиента.

Пока что все на стороне клиента прекрасно работает. Но у меня есть кнопка «Сохранить» в каждой строке сетки, которая запускает обработчик событий на стороне сервера. В этом методе на стороне сервера я пытаюсь получить значения этой текущей строки, но все они являются значениями старых ячеек, прежде чем я изменил поля / данные с помощью jquery / javascript.

Когда я перебираю каждую ячейку строки, это то же состояние, которое было при рендеринге.

Так что я пытаюсь понять это. Почему все эти причудливые вещи из javascript / jquery, когда состояние Grid остается точно таким же, каким оно было при рендеринге при повторной отправке на сервер?

кто-то, пожалуйста, пролите свет на это !!! Спасибо!

1 Ответ

0 голосов
/ 17 июля 2009

Элементы управления GridView используют ViewState для сохранения своего состояния между обратными передачами. Когда вы делаете постбэк, он загружает свое предыдущее состояние из ViewState. Изменения, которые вы делаете через клиентский Javascript, игнорируются. Это просто, как работает элемент управления.

Если вы хотите продолжать использовать элемент управления GridView со встроенным редактированием, самый простой вариант - перейти в режим редактирования через обратную передачу.

Другой вариант - иметь поля в каждом ряду для начала, только скрытые. Затем вы можете показать их через Javascript. Вы сможете получить доступ к значениям на сервере.

Еще один вариант - не использовать обратную передачу, а вызов Ajax, чтобы при нажатии кнопки сетка не отображалась повторно. Но это означает, что вам придется вручную собирать значения из таблицы через код на стороне клиента и передавать их на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...