jqGrid и глагол POST - PullRequest
       10

jqGrid и глагол POST

0 голосов
/ 20 июля 2010

Я давно пользуюсь jqGrid без каких-либо проблем. Сегодня я попытался реализовать его в проекте ASP.NET MVC 2, и все не сработало, как ожидалось.
После небольшой борьбы я понял, что теперь контроллеры не принимают вызовы GET при возврате данных JSON. Это из соображений безопасности. Если я заставлю свой контроллер поддерживать GET - форсировать ответ JSON следующим образом:

return(Json(value, JsonRequestBehavior.AllowGet))

... и указав

[AcceptVerbs( HttpVerbs.Get )]

по методике

все работает отлично, и мой jqGrid показывает результаты. Я пытался изменить глагол jqGrid myType: 'POST' но сетка перестает работать.
Я сделал немного отладки и трассировки, и кажется, что jqGrid никогда не отправляет запрос. Мой контроллер всегда получает GET.

Есть кто-нибудь, кто может мне помочь, пожалуйста.

Спасибо

Альберто

SAMPLE:

jQuery("#ProvincesDynamicGrid").jqGrid({
    url: '<%=Url.Action("Fetch", "Provinces")%>',
    postData: { id: '0' },
    datatype: 'json',
    myType: 'POST',
    colNames: ['Descr', 'Prov', 'Regione'],
    colModel: [{ name: 'Description', index: 'Description', editable: false, resizable: true, sortable: false, width: 200, align: 'right' },
               { name: 'Initial', index: 'Initial', editable: true, editrules: { required: true, custom: true, custom_func: ValidateInitialColum }, resizable: true, sortable: false, width: 90, align: 'right' },
               { name: 'RegionDescription', index: 'RegionDescription', editable: false, resizable: true, sortable: false, width: 200, align: 'right' }
              ],
    pager: $('#ProvincesDynamicPager'),
    rowNum: 11,
    // rowList: [10, 20, 50],
    width: 748,
    height: 253,
    viewrecords: true,
    shrinkToFit: false,
    scroll: false,
    rownumbers: true,
    hidegrid: false,
    caption: 'Gestione Province',
    cellEdit: true,
    cellsubmit: 'remote',
    cellurl: '<%=Url.Action("SaveProvince", "Provinces")%>',
    onSelectRow: function(id) {
        SelectedRowId = id;
    },
    beforeSaveCell: function(rowid, cellname, value, iRow, iCol) {

    },
    afterSubmitCell: function(serverresponse, rowid, cellname, value, iRow, iCol) {
        var resp = jQuery.parseJSON(serverresponse.responseText);
        // if (resp.Status == false)
        return ([resp.Status, resp.Message])
        //alert(resp.Message);
    }
});

1 Ответ

1 голос
/ 21 июля 2010

Как сказал Тони на форуме jqGrid, я неправильно ввел параметр mtype (myType: 'POST'). Таким образом, точный код будет выглядеть так:

jQuery("#ProvincesDynamicGrid").jqGrid({
    url: '<%=Url.Action("Fetch", "Provinces")%>',
    postData: { id: '0' },
    datatype: 'json',
    mtype: 'POST',
    colNames: ['Descr', 'Prov', 'Regione'],
    colModel: [{ name: 'Description', index: 'Description', editable: false, resizable: true, sortable: false, width: 200, align: 'right' },
               { name: 'Initial', index: 'Initial', editable: true, editrules: { required: true, custom: true, custom_func: ValidateInitialColum }, resizable: true, sortable: false, width: 90, align: 'right' },
               { name: 'RegionDescription', index: 'RegionDescription', editable: false, resizable: true, sortable: false, width: 200, align: 'right' }
              ],
    pager: $('#ProvincesDynamicPager'),
    rowNum: 11,
...

Теперь все работаетхорошо.

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