2016-11-26 28 views
0

Jqgrid内联编辑发送JSON数据。但内联删除发送FORMs data 。我需要使用JSON数据仅如何在JqGrid中删除时发送JSON数据?

继承人我如何在网格插入删除按钮将数据发送到Web方法

colmodelMob是我colModel阵列

colmodelMob.push(
       { 
        label: "Edit Actions", 
        name: "actions", 
        width: 100, 
        formatter: "actions", 
        formatoptions: { 
         keys: true, 
         editOptions: {}, 
         addOptions: {}, 
         delOptions: {} 
        }  
       }); 

它主要是因为一个确认对话框弹出,询问服务器行删除的构造。但我不需要我需要我的数据作为JSON发送,否则它不会打到webmethod

+0

请在*所有*您的问题中包含有关您使用的jqGrid版本和叉子([free jqGrid](https://github.com/free-jqgrid/jqGrid),商业版本[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或版本<= 4.7的旧jqGrid)。 – Oleg

+0

@Oleg即时通讯使用旧的jqgrid版本4.4.4。它的免费版本(Trirand jqGrid) – user2838738

回答

0

jqGrid使用jQuery.ajax与服务器通信。要以JSON格式发送数据,必须做两件事:

  1. 应该以JSON格式对数据进行编码。通常使用JSON.stringify进行编码。
  2. 应该使用选项contentType选项设置为"application/json""application/json; charset=utf-8"值。它在请求中包含HTTP标头ContentType。标题通知服务器,发送到服务器的数据以JSON格式编码。

(可选)也可以使用dataType: "json"选项。如果Ajax调用的响应也应包含JSON编码数据,则使用该选项。

现在关于jqGrid里面的上述要求的实现。 jqGrid可以在很多地方使用jQuery.ajax。您使用jqGrid的复古版本4.4.4。它的可能性要小得多,而且它是在很老的web浏览器,旧的jQuery等时开发出来的。我提醒你,在发布jqGrid 4.4.4的日期,一个使用了Chrome 24,Firefox 18,Internet Explorer 10和Safary 6.0.2。 IE8(和所有Internet Explorer)是桌面上最流行的网络浏览器(仅限Windows)。现在可以使用Chrome 54,Firefox 50,Microsoft Edge 38和Internet Explorer 11,Safari 10.您是否真的相信jqGrid 4.4.4能够与现代Web浏览器一起使用?我强烈建议您更新至free jqGrid的当前版本(4.13.5)。

如果你还是要用的jqGrid 4.4.4,那么你应该使用

{ 
    label: "Edit Actions", 
    name: "actions", 
    width: 100, 
    formatter: "actions", 
    formatoptions: { 
     keys: true, 
     delOptions: { 
      serializeDelData: function (postData) { 
       return JSON.stringify(postData); 
      }, 
      ajaxDelOptions: { 
       contentType: "application/json" 
      } 
     } 
    } 
} 

一个必须设置的delGridRow选项在许多不同的plases depent上使用其他方法。问题是:人们不仅直接使用delGridRow方法,而且间接使用方法。例如,formatter: "actions"navGridinlineNav使用内联编辑或表单编辑选项。您必须使用相应的深层选项来指定您的自定义选项delGridRow。免费jqGrid有jqGrid选项,它允许为方法的所有间接调用指定通用选项。可以使用inlineEditing,formEditing,formDeleting,formViewing,searching来指定所有方法使用的默认选项。因此,你可以使用的jqGrid选项

inlineEditing: { 
    keys: true 
}, 
formDeleting: { 
    serializeDelData: function (postData) { 
     return JSON.stringify(postData); 
    }, 
    ajaxDelOptions: { 
     contentType: "application/json" 
    } 
} 

之后,你可以只是删除的formatter: "actions"formatoptions财产。如果您使用navGrid,那么它在删除时也会使用相同的选项。

你可以阅读更多关于在the wiki article中指定选项的新方法。

顺便说一句,你可能有内联编辑的问题。您应该使用ajaxRowOptions选项和serializeRowData回调jqGrid在内联编辑期间进行JSON编码。免费的jqGrid支持相同的选项,并允许您在inlineEditing内另外使用ajaxSaveOptionsserializeSaveData