2010-12-02 17 views
0

J'utilise JqGrid avec ma configuration WebForms pour obtenir des données à partir d'un [WebMethod()]. Cela fonctionne, mais maintenant j'ai besoin d'obtenir le post d'édition pour renvoyer le contenu sous "Application/json", mais je n'ai pas de chance. Regarder Fiddler, je vois le message revenir en tant que "Application/x-www-forme-urlencoded" - Je pensais que j'ai trouvé et mis toutes les bonnes options, mais c'est toujours un non-aller.Asp.net JqGrid: Obtenir le post EDIT de la grille pour aller sous Application/Json?

est ici la configuration de la grille:

$.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}); 
      } 
     } 
    }); 

Mon service est un [WebMethod] méthode décorée dans la page:

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

Répondre

0

utiliser l'édition Apparemment en ligne n'a pas "ajaxEditOptions", au lieu de cela utilise "ajaxRowOptions" (allez comprendre) ...

Ainsi, le Réparez ceci:

ajaxRowOptions: { contentType: "application/json; charset=utf-8", dataType: "json" }