Asp.net JqGrid: чтобы публикация сетки редактировалась как Application / Json? - PullRequest
0 голосов
/ 02 декабря 2010

Я использую JqGrid с настройкой моего веб-сайта для получения данных из [WebMethod ()].Это работает, но теперь мне нужно получить сообщение для редактирования, чтобы отправить содержимое обратно как «Приложение / JSON», но мне не повезло.Наблюдая за Fiddler, я вижу, что сообщение вернулось как «Application / x-www-form-urlencoded» - я думал, что нашел и установил все правильные параметры, но все равно нет.

Вот таблицаsetup:

$.extend($.jgrid.edit, {
    ajaxEditOptions: { contentType: "application/json; charset=utf-8" },         
});

jQuery("#<%=jqGridName%>").jqGrid({
        editurl: "/web/juicepress-misc-settings.aspx/saveJpUserException",
        ajaxGridOptions: { contentType: "application/json; charset=utf-8", dataType: "json" },
        ajaxEditOptions: { contentType: "application/json; charset=utf-8", dataType: "json" },
        prmNames: { 
            search: "isSearch", 
            nd: null, 
            rows: "numRows", 
            page: "page", 
            sort: "sortField", 
            order: "sortOrder"
        },
        // Default values for search to make sure that the ajax call doesn't fail
        postData: { searchString: '', searchField: '', searchOper: '' },
        datatype: function(postdata) {                
            $.ajax({
                url: '/Web/juicepress-misc-settings.aspx/getJpUserExceptions',  
                type: "POST",  
                contentType: "application/json; charset=utf-8",  
                data: JSON.stringify(postdata),
                dataType: "json",
                success: function(data, st) {                        
                    if (st == "success") {
                        var grid = $("#<%=jqGridName%>")[0];
                        var gridData = data.d;                                                  
                        grid.addJSONData(gridData);
                    }
                },
                error: function() {
                    alert("Error with AJAX callback");
                }
            });
        },
        height: <%=height %>,
        width: <%=width %>,
        jsonReader: {                  
            id: "<%= keyDataField %>", //index of the column with the PK in it                 
            repeatitems: false
        },
        colNames: [ <%= getColumnHeaders() %> ],
        colModel: [ <%= getColumns() %> ],
        multiselect: false,
        gridview: true,
        ignoreCase: true,
        caption: "<%= gridTitle %>",
        gridComplete: function(){                    
            var ids = jQuery("#<%=jqGridName%>").jqGrid('getDataIDs');                    
            for(var i=0;i < ids.length;i++){
                var cl = ids[i];                        
                be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#<%=jqGridName%>').editRow('"+cl+"');\"  />"; 
                se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#<%=jqGridName%>').saveRow('"+cl+"');\"  />";                    
                jQuery("#<%=jqGridName%>").jqGrid('setRowData',cl,{act:be+se});
            }   
        }
    });

Мой сервис - это оформленный метод [WebMethod] на странице:

[WebMethod()]
public static void saveJpUserException(string name, string description, string oper, int id) {
    ...
}

1 Ответ

0 голосов
/ 02 декабря 2010

Видимо, редактирование в строке не использует «ajaxEditOptions», вместо этого он использует «ajaxRowOptions» (рисунок) ...

Так что исправить это так:

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