我有一个奇怪的。将数据存储从会话更改为oracle后,当我在'inlineNav'上按Edit时,它总是通过“add”操作进入服务器。任何想法为什么会发生这种情况?
$("#assessmentproduct").jqGrid({
url: 'orthofixServices.asmx/GetProductList',
colNames: ['id', 'Product Description', 'Commission Rate'],
colModel: [
{ name: 'id' },
{ name: 'description', index: 'desc', width: 170, editable: true },
{ name: 'commissionrate', index: 'com', width: 80, editable: true, unformat: percentUnFormatter, formatter: percentFormatter, editrules: { number: true} }
],
serializeRowData: function(data) {
var params = new Object();
params.id = 0;
params.prdid = parseInt($("#prdid").val());
params.description = data.description;
params.commissionrate = data.commissionrate;
return JSON.stringify({ 'passformvalue': params, 'oper': data.oper, 'id': data.id });
},
mtype: "POST",
rowNum: 4,
height: 93,
width: 400,
pager: '#assessmentpager',
editurl: "orthofixServices.asmx/ModifyProductList"
});
$("#assessmentproduct").jqGrid('navGrid', '#assessmentpager', { add: false, edit: false, del: true, refresh: false, search: false }, {}, {}, { serializeDelData: function(postData) {
return JSON.stringify({ 'passformvalue': null, 'oper': postData.oper, 'id': postData.id });
}
});
$("#assessmentproduct").jqGrid('inlineNav', '#assessmentpager', { addParams: { position: "last", addRowParams: {
"aftersavefunc": function() { var grid = $("#assessmentproduct"); reloadgrid(grid); }
}
}, editParams: { "aftersavefunc": function() { var grid = $("#assessmentproduct"); reloadgrid(grid); } }
});
答案 0 :(得分:1)
您使用JSON.stringify
内的serializeRowData
将发布的数据序列化为JSON。这是您描述的编码的原因。
更新:好的!现在我看到了最终的问题。误解的原因是因为您在标题中使用了oper="add"
而不是oper=add
。我了解此是您的问题(发送引用的oper="add"
而不是oper=add
)。好。在oper=add
操作的情况下发送edit
的问题是已知的jqGrid错误,已经在github上的代码中修复了(参见here)。您可以在jquery.jqGrid.src.js
中进行相同的更改并使用固定代码,直到新版本的jqGrid发布。