проблема редактирования формы jqgrid

#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'