如何在删除期间覆盖 jqGrid 发送的 id 参数
How to override id parameter sent by jqGrid during delete
我正在使用 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用uniqueId
的值覆盖了id
的值
这是一个演示:https://jsfiddle.net/zohalexix/7wczzvur/
在删除时(不重命名参数 id)是否可以发送 id
参数的实际 id
值?
添加
即可解决问题
prmNames: { id: "uniqueId" }
jqGrid 的选项。它将通知 jqGrid 在编辑操作期间使用 uniqueId
而不是默认的 id
将 rowid 发送到服务器。
此外,您还可以添加一个选项
jsonReader: { id: "uniqueId" }
并删除绝对不需要的隐藏列 uniqueId
。通常,每个隐藏的 DOM 元素都会降低页面性能并增加 Web 浏览器使用的内存大小。
此外,我建议删除 <div id="pager"></div>
,使用 pager: true
而不是 pager: '#pager'
,并从 navGrid
和 [= 中删除 '#pager
参数20=]。通过使用 navOptions
、inlineNavOptions
、formEditing
、formDeleting
、searching
、inlineEditing
等可以使代码更具可读性。参见 https://jsfiddle.net/OlegKi/7wczzvur/26/对应修改的例子
最后,我建议您迁移到当前的 4.15.3 版本。我只支持最新版本的免费 jqGrid。例如,如果您在免费的 jqGrid 4.14.1 中发现一个错误,那么它只会在最新的代码中(在 4.15.4 中)得到修复。
我正在使用 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用uniqueId
id
的值
这是一个演示:https://jsfiddle.net/zohalexix/7wczzvur/
在删除时(不重命名参数 id)是否可以发送 id
参数的实际 id
值?
添加
即可解决问题prmNames: { id: "uniqueId" }
jqGrid 的选项。它将通知 jqGrid 在编辑操作期间使用 uniqueId
而不是默认的 id
将 rowid 发送到服务器。
此外,您还可以添加一个选项
jsonReader: { id: "uniqueId" }
并删除绝对不需要的隐藏列 uniqueId
。通常,每个隐藏的 DOM 元素都会降低页面性能并增加 Web 浏览器使用的内存大小。
此外,我建议删除 <div id="pager"></div>
,使用 pager: true
而不是 pager: '#pager'
,并从 navGrid
和 [= 中删除 '#pager
参数20=]。通过使用 navOptions
、inlineNavOptions
、formEditing
、formDeleting
、searching
、inlineEditing
等可以使代码更具可读性。参见 https://jsfiddle.net/OlegKi/7wczzvur/26/对应修改的例子
最后,我建议您迁移到当前的 4.15.3 版本。我只支持最新版本的免费 jqGrid。例如,如果您在免费的 jqGrid 4.14.1 中发现一个错误,那么它只会在最新的代码中(在 4.15.4 中)得到修复。