如何在JQGrid的行编辑中禁用某些单元格的编辑?

问题描述:

当我点击我的网格的任何一行时,所有可编辑列都变为可编辑。如何在JQGrid的行编辑中禁用某些单元格的编辑?

我希望一些列可以分别在每一行上编辑。

    Column 1, Column 2,  Column 3    
ROW Number 1 - editable,  non-editable, non-editable 
ROW Number 2 - non-editable, editable,  non-editable  
ROW Number 3 - editable,  non-editable, non-editable 

由于提前

如果使用inline editing mode,想决定动态该行的细胞将可编辑例如基于对含有细胞可以在方式做到这一点,其我描述了here。你可以用另一种方法也这样做:

$(this).jqGrid('setColProp', 'YouColumnName', {editable:false}); 

所以,你应该只设置editablefalsetrue之前调用editRow方法。通过这种方式你可以实现你想要的任何逻辑。

UPDATE:Free jqGrid允许将editable定义为回调函数。见the wiki article。它允许在某些行中使列可编辑,并为其他行保留不可编辑。

+0

好,所以,我可以连续检查单元格的值。然后使其可编辑:false。所以它变为不可编辑的选定的行右.. ..? –

+0

@stacktrace:'editRow'方法测试哪些列可编辑**此刻**。它创建''或'

+0

好的。得到它了。谢谢。 –

我也有类似的规定,只是扩大什么Oleg在他的答案已经提到:

//get colModel properties 
var cm = jQuery("#grid").jqGrid('getColProp','myColumn'); 

//some condition to enable or disable editing 
cm.editable = false; 

//always call editRow after changing editable property 
jQuery('#grid').jqGrid('editRow', rowId, {}); 

//set default editable option 
cm.editable = true; 

干杯:)

+0

为什么你不要't call'jQuery('#grid')。jqGrid('editRow',rowId,{});'在最后设置'cm.editable = true'后? – HeyJude

+0

因为这会将单元格设置为可再次编辑。这里你要做的是让一个特定的单元有条件地不可编辑,但其余的列保持可编辑。 'cm.editable = true;'是在再次调用editRow时将col模型设置回可编辑状态。 –