我想将json数据发布到服务器(REST API)。当我现在双击一行进行内联编辑时,会调用'serializeRowData'并且我的服务器在正文中接收json格式的消息。但是当我点击寻呼机中的小“+”图标时,不会调用'serializeRowData'。
我正在使用版本:
我的网格看起来像:
$("#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 :(得分:4)
因为内联编辑不会出现这种情况。您可以像这样更改代码的最后一行。
$("#dbgrid").jqGrid('navGrid','#pdbgrid',{edit:true,add:true,del:true},
{//edit parameters},
{//add parameters
serializeEditData: function (postdata) {}
},
{//delete parameters}
);
现在,如果您想序列化编辑数据,那么您也可以在编辑参数中编写相同的功能。此功能适用于添加和编辑。对于删除,它将是serializeDelData。
我希望它可以帮到你。
答案 1 :(得分: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)
}