#jqgrid
#jqgrid
Вопрос:
Я использую jqGrid с mvc 2 следующим образом:
jQuery("#extension_grid").jqGrid({
url: '/Extension/Report',
datatype: "json",
direction: "rtl",
height: "auto",
jsonReader: { root: "rows", page: "page", total: "total", records: "records", repeatitems: false, userdata: "UserData" },
colModel:
[
{ name: 'id', label: 'داخلی', key: true, search: true, width: 55 },
{ name: 'assigned_user', label: 'کاربر', width: 90, editable: true },
{ name: 'creation_date', label: 'تاریخ ایجاد', width: 100, formatter: 'date', formatoptions: { newformat: 'Y-m-d H:i:s'} }
],
rowNum: -1,
pager: '#extension_pager',
sortname: 'id',
viewrecords: true,
sortorder: "asc",
caption: "داخلیها",
editurl: '/Extension/MyEdit'
});
jQuery("#extension_grid").jqGrid('navGrid', '#extension_pager', { edit: true, add: true, del: true }, {}, {}, {}, { multipleSearch: true });
когда я выбираю строку и нажимаю кнопку редактирования, появляется диалоговое окно, и я могу отредактировать строку. после отправки данные успешно публикуются в editurlе. но изменения не сохраняются на стороне клиента grid. должен ли я сохранять изменения на стороне клиента вручную?
Я попробовал с типом данных local, и это работает!!! что мне делать? есть ли какие-либо проблемы с использованием данных json и редактированием формы?
Ответ №1:
Ситуация, которую вы описали, кажется мне очень странной. Для форм «Добавить» и «Редактировать» есть настройки по умолчанию reloadAfterSubmit:true
. Это означает, что после отправки формы «Редактировать», например, содержимое сетки будет перезагружено. Вы можете проверить в отношении Fiddler или Firebug, что перезагрузка сетки произошла. Таким образом, либо ваша серверная часть ‘/ Extension /MyEdit’ не сохраняет данные, либо другой сервер ‘ / Extension / Report’ не получает обновленные данные. Есть ли у вас какое-либо кэширование данных на сервере?
Итак, вам следует более тщательно проанализировать проблему, с которой вы столкнулись. Если вы не хотите решать проблему самостоятельно, вам следует обновить / дополнить свой вопрос дополнительной информацией.
Комментарии:
1. спасибо за ваш ответ. Проблема заключалась в том, как, по моему мнению, работает jqGrid. Я думал, что jqgrid применяет изменения локально (на стороне клиента) после отправки данных редактирования на сервер и получения успеха. но на самом деле изменения вносятся после перезагрузки данных с сервера. Я тестировал и не отображал данные в базе данных.
2. @user590747: Не могли бы вы заметить, что сервер отправляет обратно старые данные ? Почему ваше серверное приложение делает это? Кстати, вы можете установить
reloadAfterSubmit:false
в настройках «Редактировать»navGrid
(смотритеprmEdit
параметр здесь ). В случае, если jqGrid обновит данные таблицы после успешной отправки в'/Extension/MyEdit'