需要基于某个值使单个jqgrid单元格可编辑

时间:2019-05-24 15:27:29

标签: jqgrid

我有一个jqGrid,我希望某些单元格可以根据单独的隐藏单元格中的值进行编辑。因此,网格中的每一行都没有相同的配置。换句话说,我不希望整个列都可编辑。

我将下面的代码放在网格的loadComplete事件中。我遍历每一行,并根据隐藏值ProductCatIndex将EstimatedCost和AverageSalePrice的可编辑属性设置为true。

var ids = $('#' + jqgrid_id).jqGrid('getDataIDs');
var count = $('#' + jqgrid_id).getGridParam('reccount');

for (var x = 0; x < count; x++) {
    var rowId = ids[x];

    if (row.ProductCatIndex == 2) {
        $('#' + jqgrid_id).jqGrid('setCell', rowId, 'EstimatedCost', '', '', { 'editable': true });
    }
    else if (row.ProductCatIndex == 3) {
        $('#' + jqgrid_id).jqGrid('setCell', rowId, 'AverageSalePrice', '', '', { 'editable': true });
    }
}

我逐步浏览了一下代码,看到它运行正常,但是单元格不可编辑。我在网格级别具有cellEdit:true,但是我没有在列上设置editable属性,因为我试图在上面的代码中动态设置它。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您执行此操作的方式没有效果

我可以推荐其他方法来执行此操作。

如果单元格具有“ not-editable-cell”类,则该单元格不可编辑,而是将colModel中的单元格设置为可编辑。参见docs here

这种方式可以使用cellattr函数,因为它在创建过程中会添加属性。参见docs here too

将editable属性设置为true并尝试使用以下代码:

colModel : [ 
    ...
    { name : 'EstimatedCost', editable : true,..., 
         cellattr : function( id, val, rawdata, cm, rdata)  { 
             ret = ""
             if( parseInt(rdata['ProductCatIndex'],10) !== 2 ) {
                 ret = " class='not-editable-cell'";
             }
             return ret;
         }
     }

对其他字段执行相同操作。