我正在使用free-jqGrid 4.14.1来显示在两列上具有复合ID的数据:id
和type
。由于jqGrid不支持组合键,因此我添加了一个名为uniqueId
的字段,其中包含id
和type
的连接值:
$grid.jqGrid({
url: /*ajaxListURL*/ '',
editurl: /*ajaxActionURL*/ '',
datatype: 'json',
mtype: 'POST',
loadonce: false,
colModel: [
{name: 'uniqueId', key: true, hidden: true}, //uniqueId=id+type
{name: 'id', editable: true, hidden: true, editrules: {edithidden:true}, hidedlg: true},
{name: 'type', editable: true, hidden: true, editrules: {edithidden:true}, hidedlg: true},
{name: 'name', editable: true}
]
}).jqGrid('navGrid', '#pager', {edit: false, add: false, del: true}, {}, {}, {
onclickSubmit: function(options, delId){
var rowData = $(this).jqGrid('getRowData', delId);
return {
id: rowData['id'],
type: rowData['type']
};
}
}).jqGrid('inlineNav', '#pager', {add: false});
我的服务器需要id
和type
参数来编辑或删除记录。它无法处理解析uniqueId
以便在没有我想要避免的后端重构的情况下提取id
。
为了使编辑工作,我使字段id
和type
可编辑和隐藏,这样jqGrid将在每次编辑记录时发送。 (这很好)
为了使删除工作,我实现了删除寻呼机选项的onclickSubmit
方法,并手动将id
和type
值添加到postData。但是jqGrid会将id
的值覆盖为uniqueId
以下是演示:https://jsfiddle.net/zohalexix/7wczzvur/
有没有在删除时发送id
参数的实际id
值(不重命名参数ID)?
答案 0 :(得分:1)
您可以通过添加
来解决问题prmNames: { id: "uniqueId" }
jqGrid的选项。它将通知jqGrid在编辑操作期间使用uniqueId
而不是默认id
来向服务器发送rowid。
此外,您还可以添加一个选项
jsonReader: { id: "uniqueId" }
并删除绝对不需要的隐藏列uniqueId
。通常,每个隐藏的DOM元素都会降低页面的性能并增加Web浏览器使用的内存大小。
此外,我建议删除<div id="pager"></div>
,使用pager: true
代替pager: '#pager'
,并从'#pager
和{{navGrid
删除inlineNav
参数1}}。通过使用navOptions
,inlineNavOptions
,formEditing
,formDeleting
,searching
,inlineEditing
等,可以使代码更具可读性。请参阅{{3一个相应修改的例子。
最后,我建议您迁移到当前的4.15.3版本。我只支持最新版本的免费jqGrid。如果您在免费的jqGrid 4.14.1中找到一个例子,那么它将仅在最新的代码中修复(在4.15.4中)。