在 jqGrid 中,我正在内联编辑模式下工作。
当用户尝试编辑行(单击笔操作图标)时,我想阻止({editable: false}
)根据另一个单元格的内容编辑特定可编辑行的单元格在这一行。
grid.setColProp('myColumn',{editable:false});
对我来说不好,因为这将禁用所有网格行中“myColumn”的编辑,而我想应用它仅在当前编辑的行上。
最佳答案
属性editable
的值对于所有行都是通用的,但该值仅由editRow
方法使用,该方法初始化内联编辑。因此,您可以根据 setColProp
动态更改 editable
属性的值(如 the answer )。在每次调用 editRow
之前,请务必设置 editable
属性的正确值。在 the answer您可以查看相应的代码示例和演示。
更新:如果您使用 formatter: "actions"
那么您可以“子类”调用的 $.fn.fmatter.rowactions
onclick
处理程序。下面您可以看到相应代码的示例
var orgRowActions = $.fn.fmatter.rowactions;
$.fn.fmatter.rowactions = function (rid, gid, act, pos) {
var $grid = $("#" + $.jgrid.jqID(gid)),
rowData = $grid.jqGrid("getLocalRow", rid),
isNonEditable = false,
result;
// we can test any condition and change
// editable property of any column
if (act === "edit" && parseFloat(String(rowData.tax)) <= 20) {
$grid.jqGrid("setColProp", "note", {editable: false});
isNonEditable = true;
}
result = orgRowActions.call(this, rid, gid, act, pos);
if (isNonEditable) {
// reset the setting to original state
$grid.jqGrid("setColProp", "note", {editable: true});
}
return result;
}
对应的demo你会发现here 。仅当“tax”列的值 <= 20 时,“note”列才可在演示中编辑:
如果您有 datatype: "json"
或 datatype: "xml"
而不使用 loadonce: true
您应该替换调用getLocalRow
到上面代码中 getRowData
或 getCell
的调用。
关于javascript - 防止在内联编辑模式下编辑特定可编辑行的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955568/