Данные для контроллера из jqGrid в MVC3? - PullRequest
1 голос
/ 07 марта 2012

Как видите, я очень новичок в этом деле.

Я установил jqGrid, в нагрузках нормально. Я пытаюсь включить встроенное редактирование, и я не знаю, как это настроить. Мой метод получения вызывается, но я не получаю никаких данных.

Настройка сетки:

    $(function () {
    var lastsel;
    $("#list").jqGrid({
        url: '@Url.Action("ExampleData", "Home")',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Namn', 'Adress', 'Stad'],
        colModel: [
          { name: 'Name', index: 'Name', width: 130, editable: true },
          { name: 'Address', index: 'Address', width: 180, editable: true },
          { name: 'City', index: 'City', width: 80, editabel: true },
        ],
        pager: '#pager',
        rowNum: 10,
        rowList: [10, 20, 30],
        sortname: 'Name',
        sortorder: 'desc',
        viewrecords: true,
        gridview: true,
        width: 700,
        onSelectRow: function (id) {
            if (id && id !== lastsel) {
                jQuery('#list').jqGrid('restoreRow', lastsel);
                jQuery('#list').jqGrid('editRow', id, true);
                lastsel = id;
            }
        },
        editurl: '@Url.Action("Incoming", "Home")',
        caption: 'Kontaktpersoner'
    });

    jQuery("#list").jqGrid('navGrid',"#prowed3",{edit:false,add:false,del:false});

И код в контроллере, который вызывается. Я полагаю, что это editurl, который должен использоваться для получения данных ...

    public ActionResult Incoming(Object stuff)
    {
        return null;
    }

Разве я не должен вернуть json на сервер, как то, что я отправляю на него при загрузке?

1 Ответ

0 голосов
/ 07 марта 2012

Действие контроллера Incoming не требует возврата каких-либо данных обратно в jqGrid, поскольку вы используете его только для редактирования, а не для добавления новых данных. Важно только то, что в случае ошибки действие возвращает код состояния HTTP, который соответствует ошибке. В случае, если jqGrid может восстановить предыдущие результаты.

В некоторых случаях вы должны возвращать данные с сервера и в случае успешного редактирования. Например, для управления оптимистичным параллелизмом в каждой таблице базы данных обычно используется столбец rowversion (ранее timestamp ) без значения NULL. Значение для столбца будет автоматически создано при вставке в таблицу и будет автоматически обновлено при ОБНОВЛЕНИИ элемента данных. Поэтому я заполняю jqGrid одним дополнительным скрытым столбцом, который я получаю из базы данных вместе с другими данными. При редактировании строки старое значение rowversion будет использоваться для проверки того, были ли изменены данные из другого места . В любом случае необходимо отправить новую версию rowversion в jqGrid после любого редактирования строки. Можно использовать aftersavefunc, чтобы прочитать ответ сервера и обновить значение rowversion, сохраненное в jqGrid.

Приведенное выше объяснение является лишь приблизительной схемой возможной реализации. Ответ на ваш главный вопрос был таков: вам не нужно ничего возвращать из действия Incoming. Если вам нужно отправить некоторую информацию в jqGrid, вы можете использовать aftersavefunc параметр editRow , чтобы получить ответ сервера и обработать его.

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