2012-08-29 112 views
1

我想将json数据发布到服务器(REST API)。当我现在双击内联行进行编辑时,会调用“serializeRowData”,并且我的服务器在主体中接收到一个json格式的消息。但是当我点击寻呼机中的小'+'图标时,'serializeRowData'不被调用。JQGrid在editRow上发布JSON数据

我使用的版本:

  • 的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} 

我缺少的东西?

任何帮助,以及例子,将非常感激。

+0

嘿,如果回答的帮助下,表现出一定的升值,通过给予投票向上或makr它作为回答,如果它不能帮助,写一些评论。 –

回答

4

因为这不会进行内联编辑。你可以像这样改变代码的最后一行。

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

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

{//delete parameters} 
); 

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

我希望它能帮助你。

+0

非常感谢。这工作完美 –

+0

标记为答案,然后... –

3

如果有人在这里有同样的问题工作方案:

... 
$("#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) 
}