禁止在内联编辑模式下编辑特定的可编辑行的单元格

在jqGrid中,我正在以内联编辑模式工作。

当用户尝试编辑一行(单击笔操作图标)时,我想阻止( {editable: false} )根据此行中另一个单元格的内容编辑特定的可编辑行的单元格。

grid.setColProp('myColumn',{editable:false}); 对我不好,因为这会禁用所有网格行中’myColumn’的编辑,我只想在当前编辑的行上应用它

editable属性的值对于所有行都是通用的,但该值仅由初始化内联编辑的editRow方法使用。 因此,您可以根据setColProp动态更改editable属性的值(如答案中所示 )。 在每次调用editRow之前设置正确的editable属性值非常重要。 在答案中,您可以看到相应的代码示例和演示。

更新 :如果您使用formatter: "actions"那么您可以“子类化” onclick处理程序中调用的$.fn.fmatter.rowactions 。 您可以在下面看到相应代码的示例

 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; } 

你会在这里找到相应的演示。 仅当“tax”列中的值<= 20时,才能在演示中编辑“note”列:

在此处输入图像描述

如果你有datatype: "json"datatype: "xml"而不使用loadonce: true你应该在上面的代码getCell getLocalRow的调用替换为getRowDatagetCell的调用。