jQGrid,如何使列在添加对话框中可编辑但在(内联)编辑期间不可编辑

IT技术 javascript jquery jqgrid editing
2021-02-11 03:28:41

我有一个带有列的 jQGrid,我只想在添加新行时对其进行编辑。

我已经看到了在对话框中进行编辑和添加时如何执行此操作的示例,但是有没有办法通过内联编辑来执行此操作?

我已经尝试在 beforeShowForm: 中使用 grid.setColProp() ,但这不起作用(该列保持只读状态并且不在添加对话框中)。

基于对话框的列启用/禁用示例:http :
//www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm

1个回答

因为您使用了我的旧答案(thisthis)中的示例所以我觉得我也应该回答您的问题。

旧示例中,可以在“添加”或“编辑”对话框期间修改的所有字段都具有属性 editable:true只应在“添加”对话框中显示的字段将隐藏在beforeShowForm事件句柄中。同理,我们可以临时将一些字段切换到editable:falseeditRow方法调用之前,并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;
    }
}

你可以在这里看到这个

更新: 免费 jqGrid允许定义editable为回调函数。请参阅维基文章它允许使列在某些行中可编辑,而在其他行中不可编辑。

@DotNET Ninja:目前我只在 stackoverflow 和 trirand 论坛上写答案。我希望下次我能抽出时间写一篇博客或文章或一本书来描述如何有效地使用 jqGrid。
2021-03-17 03:28:41
@RRK:属性当前值editable将由editRow. 因此,如果您在每次调用之前更改公共属性editableeditRow就像我展示那样,那么您只能制作不可编辑的选定行。
2021-03-17 03:28:41
伟大的!你有关于 jQGrid 的任何博客文章、出版物或其他堆栈答案吗?
2021-03-18 03:28:41
@Oleg:如果我们想让一列在所有行中都不可编辑,这似乎可行。有没有办法使某些行的特定列可编辑而不是其他行?我环顾四周,没有找到任何与我正在寻找的东西相近的东西。先感谢您。
2021-03-21 03:28:41
@Oleg:谢谢。它现在正在工作。我错过了在 editRow 调用后重置可编辑属性的部分。
2021-03-31 03:28:41