Проблема редактирования формы 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 и редактированием формы?


person user590747    schedule 17.05.2011    source источник


Ответы (1)


Ситуация, которую вы описали, мне кажется очень странной. Есть настройки по умолчанию reloadAfterSubmit:true для форм «Добавить» и «Редактировать». Это означает, что после отправки формы «Редактировать», например, сетка будет перезагружена. Вы можете проверить в соответствии с Fiddler или Firebug, чтобы произошла перезагрузка сетки. Таким образом, либо ваша серверная часть «/ Extension / MyEdit» не сохраняет данные, либо сервер «/ Extension / Report» не получает обновленные данные. У вас есть какое-то кеширование данных на сервере?

Поэтому вам следует более внимательно проанализировать проблему, которая у вас есть. Если вы не решите проблему самостоятельно, обновите / добавьте в свой вопрос дополнительную информацию.

person Oleg    schedule 17.05.2011
comment
спасибо за ваш ответ. Проблема заключалась в том, как я думал, что jqGrid работает. Я думал, что jqgrid применяет изменения локально (на стороне клиента) после отправки данных редактирования на сервер и получения успеха. но на самом деле изменения вносятся после перезагрузки данных с сервера. Я тестировал и не отображал данные в базу данных. - person user590747; 18.05.2011
comment
@ user590747: Вы видели, что сервер отправляет обратно старые данные? Почему ваше серверное приложение это делает? Кстати, вы можете установить reloadAfterSubmit:false в параметрах редактирования navGrid (см. Параметр prmEdit здесь). В случае, если jqGrid обновит данные сетки после успешной отправки в '/Extension/MyEdit' - person Oleg; 18.05.2011