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

标签 javascript jquery jqgrid

在 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”列才可在演示中编辑:

enter image description here

如果您有 datatype: "json"datatype: "xml" 而不使用 loadonce: true 您应该替换调用getLocalRow 到上面代码中 getRowDatagetCell 的调用。

关于javascript - 防止在内联编辑模式下编辑特定可编辑行的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955568/

相关文章:

javascript - 如何在javascript中的每个单词后添加符号

javascript - 带有 "hover"触发器的 AngularStrap bs-dropdown 不能保持足够长的打开时间

javascript - 文本区域点击时计算字数 |改变 | keuyup 以及通过单击按钮填充文本区域时

javascript - 停止 shift 单击以突出显示文本

javascript - 如何改变jquery下拉值

jquery - offset() 在 Chrome 中为同一元素返回不同的值

jquery - jqgrid 错误 - b.jgrid.jqID 不是函数

jqGrid 保持当前页面刷新

javascript - 将任意嵌套对象转换为字符串的递归函数

jqgrid - 如何在jqgrid中限制行的最大高度