我有一个带有列的jQGrid,我只想在添加新行时进行编辑。
我已经看到过如何在对话框中进行编辑和添加时如何执行此操作的示例,但是有没有办法通过内联编辑执行此操作?
我已尝试在beforeShowForm:中使用grid.setColProp(),但这不起作用(该列保持只读且在添加对话框中不存在)。
基于对话框的列启用/禁用示例:
http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm
答案 0 :(得分:18)
因为您使用了旧答案(this和this)中的示例,我觉得我也应该回答您的问题。
在old example所有字段中,可以在“添加”或“编辑”对话框中修改这些字段,其属性为editable:true
。应仅在“添加”对话框中显示的字段将隐藏在beforeShowForm事件句柄内。同样,我们可以临时在调用editRow方法之前将某些字段切换为editable:false
,并在调用后立即重置为editable:true
:
onSelectRow: function(id) {
if (id && id !== lastSel) {
grid.jqGrid('restoreRow',lastSel);
var cm = grid.jqGrid('getColProp','Name');
cm.editable = false;
grid.jqGrid('editRow', id, true, null, null, 'clientArray');
cm.editable = true;
lastSel = id;
}
}
你可以看到这个here。
更新: Free jqGrid允许将editable
定义为回调函数。见the wiki article。它允许使列在某些行中可编辑,并对其他行保持不可编辑。