【问题标题】:JQGrid Posting JSON data on editRowJQGrid 在 editRow 上发布 JSON 数据
【发布时间】:2012-08-30 04:56:47
【问题描述】:

我想将 json 数据发布到服务器(REST API)。当我现在双击一行以编辑内联时,会调用“serializeRowData”,并且我的服务器会在正文中收到一条 json 格式的消息。但是当我点击寻呼机中的小“+”图标时,不会调用“serializeRowData”。

我正在使用版本:

  • jQuery 1.5.2
  • JQGrid 4.4.1

我的网格看起来像:

$("#dbgrid").jqGrid({ 
    url: 'rest/config/dbs',
    editurl: 'rest/config/db',
    datatype: "json", 
    height: 255, 
    width: 600, 
    colNames:['ID', 'Env', 'Hostname', 'Name', 'Port', 'Service Name', 'SID'], 
    colModel:[ 
        {name:'id',index:'id', width:30, sorttype:'int'}, 
        {name:'env',index:'env', editable:true, width:50}, 
        {name:'hostName',index:'hostName', editable:true, width:200},
        {name:'name',index:'name', editable:true, width:200},
        {name:'port',index:'port', editable:true, width:30},
        {name:'serviceName',index:'name', editable:true, width:30},
        {name:'sid',index:'sid', editable:true, width:30}
    ], 
    jsonReader: {
        repeatitems: false,
        id: "id",
    },
    rowNum:50, 
    rowTotal: 2000, 
    rowList : [20,30,50], 
    loadonce:false, 
    mtype: "GET", 
    rownumbers: true, 
    rownumWidth: 40, 
    gridview: true, 
    pager: '#pdbgrid', 
    sortname: 'id', 
    viewrecords: true, 
    sortorder: "asc", 
    caption: "Database Servers"  ,
    ajaxRowOptions : {
        type :"POST",
        contentType :"application/json; charset=utf-8",
        dataType :"json"
    },
    serializeRowData: function(postdata){     
        return JSON.stringify(postdata);
    }
});
$("#dbgrid").jqGrid('navGrid','#pdbgrid',{edit:true,add:true,del:true}

我错过了什么吗?

非常感谢任何帮助以及示例。

【问题讨论】:

  • 嘿,如果答案有帮助,请表示感谢,通过投票或将其标记为答案,如果没有帮助,请写一些 cmets。

标签: json jqgrid


【解决方案1】:

因为内联编辑不具备这种功能。您可以像这样更改代码的最后一行。

$("#dbgrid").jqGrid('navGrid','#pdbgrid',{edit:true,add:true,del:true},
{//edit parameters},

{//add parameters
serializeEditData: function (postdata) {}
},

{//delete parameters}
);

现在,如果您想序列化编辑数据,那么您也可以在编辑参数中写入相同的功能。此功能适用于添加和编辑。对于删除,它将是serializeDelData。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    如果有人在这里遇到同样的问题,一个可行的解决方案:

    ...
    $("#dbgrid").jqGrid('navGrid','#pdbgrid',
        {edit:true,add:true,del:true},
        {
            //edit parameters
            ajaxEditOptions: jsonOptions,
            serializeEditData: createJSON,
            closeAfterEdit: true
        },
        {
            //add parameters
            ajaxEditOptions: jsonOptions,
            serializeEditData: createJSON,
            closeAfterAdd: true
         },
         {
             //delete parameters
             ajaxDelOptions: jsonOptions,
             serializeDelData: createJSON
         }
    );
    
    var jsonOptions = {
        type :"POST",
        contentType :"application/json; charset=utf-8",
        dataType :"json"
    };
    
    function createJSON(postdata) {
        if (postdata.id === '_empty')
            postdata.id = null; // rest api expects int or null
        return JSON.stringify(postdata)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多