我在将某些单元格(使用 cellEdit: true)设置为不可编辑时遇到了一些问题,即使该列设置为可编辑。
我试过很多方法,比如 beforeEditCell、formatters 等。似乎都没有用。
我最接近的方法是为我希望可编辑的列设置格式化程序,然后使用 setCell 设置“不可编辑单元格”类(下面的代码段)。第一次单击该单元格时,不幸的是它进入了编辑模式,但如果您单击其他地方并尝试重新编辑该单元格,它就成功地不可编辑了。
我也尝试过使用相同的片段,但在 beforeEditCell 内部,它成功地阻止了单元格的编辑,但又“卡住”了网格。您不能再选择任何其他单元格。
function noEditFormatter(cellValue, options, rowObject) {
if (cellValue == 'test')
jQuery("#grid").jqGrid('setCell', options.rowId, 'ColName', '', 'not-editable-cell');
return cellValue;
}
如有任何帮助,我们将不胜感激。
最佳答案
使用思路setCell将类“not-editable-cell”添加到应该不可编辑的单元格的方法是正确的。你选择了错误的地方来做这件事。在自定义格式化程序内部,直到最后才可以构建网格。我建议你使用 loadComplete或 gridComplete检查当前页面的网格包含并将某些单元格标记为不可编辑。
我准备了an example这证明了这一点。就像在您的示例中一样,所有具有“测试”文本的单元格都被标记为不可编辑。在这种情况下,您可以检查一个单元格并将另一个单元格标记为不可编辑。
关于javascript - JQGrid:根据内容动态将单元格设置为不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718742/