asp.net webforms ajax update gridview - PullRequest
2 голосов
/ 14 июля 2011

У нас есть сеточное представление с довольно большим количеством информации (100 с или строками и столбцами), которое нам необходимо улучшить для повышения производительности.

В настоящее время, чтобы исправить некоторые проблемы с производительностью, мы сделали, чтобы сеточное представление не имело шаблон редактирования ивместо этого, двойной щелчок по ячейке вызовет выпадающий список доступных опций, которые извлекаются с помощью веб-методов и динамически заполняются с помощью jquery, после того, как в выпадающем списке выбран вариант, мы устанавливаем значение в html на значение выбранного параметра.

У нас возникают проблемы с последующей отправкой этих изменений обратно на сервер, у нас есть кнопка на странице, которая вызывает обратную передачу на сервер, но изменения, которые мы внесли с помощью функции jquery, недоступны, когда мы выполняем циклчерез элементы gridview они все еще имеют те же значения, что и предыдущие.

Неужели мы идем по этому неправильному пути с точки зрения заполнения / обновления, как мы можем достичь этого?

В сторону: я знаю, что мывероятно, следует ограничить границысетка, но на данный момент это не вариант

Ответы [ 4 ]

2 голосов
/ 14 июля 2011

Если вы хотите улучшить производительность, вы не должны использовать.

  1. UpdatePanel
  2. ScriptManager
  3. GridView

IЯ предполагаю, что вы используете все это.

Вы можете Использовать jQuery для прямого вызова методов страницы ASP.NET AJAX , вообще не используя ScriptManager.Объедините это с мощью любой из рекомендаций jQuery Grid ( здесь и здесь ).Мне комфортно с DataTables , но я все больше слышу о SlickGrid .Вы должны попробовать.

Теперь, когда все на стороне клиента, не будет проблемы потери значения при отправке.

Кроме того, я настоятельно рекомендую вообще не использовать UpdatePanel .Но это только я.

1 голос
/ 14 июля 2011

Когда вы работаете с GridView изначально, то есть позволяете ему обрабатывать шаблон редактирования, ViewState попадает на сцену и работает просто отлично.Но когда вы манипулируете сеткой вручную, никакие изменения не отражаются в связанных местах, таким образом, имея одинаковые значения на сервере.Вы сказали, что выбираете значения в dblclick через jQuery.Почему бы вам не обновить строку на размытие?Я имею в виду, когда пользователь переходит к следующему ряду, просто обновите текущую запись через Ajax.Это самый безопасный подход.Когда-то у меня был такой же опыт с RadTree Telerik.Вам следует:

  1. Использовать клиентский API, предоставленный для ваших элементов управления, или
  2. Не связываться с собственным способом работы вашего элемента управления, ожидая, что PostBacks будет работать, или
  3. Используйте элементы управления только для отображения, а для манипуляций используйте AJAX.
0 голосов
/ 14 июля 2011

Я нашел этот код "framework" http://www.codeproject.com/KB/ajax/AJAXWasHere-Part1.aspx, Он изменяет / воссоздает ViewState и отправляет его с помощью запроса AJAX, чтобы вы все еще могли использовать модель событий в ASP.NET.Это была работа AJAX до того, как MS выпустила собственную версию .NET 2.0.

Я использую ее вместе с библиотекой JS mootools, поэтому у вас не должно возникнуть проблем с ее использованием с JQuery, но вы не сможетеиспользовать методы JQuery AJAX, если вы не переписываете CallBackObject как плагин Jquery.

С уважением

0 голосов
/ 14 июля 2011

Я думаю, что проблема заключается в том, что после повторной отправки данные перезагружаются из состояния просмотра. Мы использовали веб-метод для загрузки материала в диалог jquery и обновления через него. И после успешного сохранения обновил сетку, чтобы отразить изменения.

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