JQGrid:根据内容动态设置单元格不可编辑

Sha*_*awn 8 javascript jquery jqgrid

我有一些问题,即使列设置为可编辑,一些单元格(使用cellEdit:true)也是不可编辑的.

我尝试了很多方法,比如beforeEditCell,格式化程序等.似乎没有用.

我最接近的是将格式化程序设置为我想要编辑的列,然后使用setCell设置'not-editable-cell'类(下面的代码段).第一次单击单元格时,它很可能会进入编辑模式,但是如果您单击其他位置并尝试重新编辑单元格,则它已成功无法编辑.

我也试过使用相同的剪切但在beforeEditCell内部,它成功地阻止了单元格的编辑,但反过来"冻结"网格.您无法再选择任何其他单元格.

function noEditFormatter(cellValue, options, rowObject) {
    if (cellValue == 'test')
        jQuery("#grid").jqGrid('setCell', options.rowId, 'ColName', '', 'not-editable-cell');
    return cellValue;
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

Ole*_*leg 12

使用setCell方法将类"not-editable-cell"添加到应该不可编辑的单元格的想法是正确的.你只选择了错误的地方.在自定义格式化器内部,网格可能尚未构建到最后.我建议您使用loadCompletegridComplete来检查当前页面的网格包含,并将某些单元格标记为不可编辑.

我准备了一个证明这一点的例子.与您的示例中一样,所有具有"测试"文本的单元格都标记为不可编辑.在这种方式中,您可以检查一个单元格并将另一个单元格标记为不可编辑.