如何在JqGrid中删除时发送JSON数据?

时间:2016-11-26 07:04:57

标签: jquery asp.net jqgrid

Jqgrid内联编辑发送.content{ width: calc(100px * attr(data-x number, 1)); background: #f00; } 数据。但内联删除发送JSON 。我需要仅使用JSON数据将数据发送到Web方法

继承人如何在网格中插入删除按钮

colmodelMob是我的FORMs data数组

colModel

它基本上是因为弹出一个确认框,要求服务器确认行删除。但我不需要我需要将我的数据作为JSON发送,否则它不会点击 colmodelMob.push( { label: "Edit Actions", name: "actions", width: 100, formatter: "actions", formatoptions: { keys: true, editOptions: {}, addOptions: {}, delOptions: {} } });

1 个答案:

答案 0 :(得分:0)

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

  1. 应该以JSON格式编码数据。一个人通常使用JSON.stringify进行编码。
  2. 应使用设置为contentType"application/json"值的"application/json; charset=utf-8"选项。它在请求中包含HTTP标头ContentType。标头通知服务器,发送到服务器的数据以JSON格式编码。
  3. 也可以选择使用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)是桌面上最受欢迎的Web浏览器(仅限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的选项,这取决于其他方法的用法。问题是:人们不仅直接使用delGridRow方法,而且间接使用formatter: "actions"方法。例如navGridinlineNavdelGridRow使用内联编辑或表单编辑选项。您必须使用相应的深层放置选项来指定inlineEditing的自定义选项。免费的jqGrid具有 jqGrid选项,它允许为方法的所有间接调用指定公共选项。可以使用formEditingformDeletingformViewingsearchinginlineEditing: { keys: true }, formDeleting: { serializeDelData: function (postData) { return JSON.stringify(postData); }, ajaxDelOptions: { contentType: "application/json" } } 来指定所有方法使用的默认选项。因此,您可以使用jqGrid选项

    formatoptions

    之后,您只需删除formatter: "actions"的{​​{1}}属性即可。如果您使用navGrid,则在删除过程中也会使用相同的选项。

    您可以在the wiki article中详细了解指定选项的新方法。

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