2

在 jqGrid 中,我在 inline-edit 模式下工作。

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

grid.setColProp('myColumn',{editable:false});对我不利,因为这将禁用所有网格行中“myColumn”的编辑,我只想将它应用于当前编辑的行。

4

1 回答 1

11

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

更新:如果你使用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;
}

您可以在此处找到相应的演示。仅当“税”列中的值 <= 20 时,“注释”列才可在演示中编辑:

在此处输入图像描述

如果您有datatype: "json"datatype: "xml"没有使用,loadonce: true您应该将调用替换为上述代码中getLocalRow的调用getRowData或。getCell

于 2012-10-18T14:00:55.073 回答