需要根据一定值使单个JQGRID单元单元可编辑

  • 本文关键字:单元 JQGRID 单个 编辑 jqgrid
  • 更新时间 :
  • 英文 :


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

我将下面的代码放在网格的LoadComplete事件中。我遍历每一行,并根据隐藏的值productcatIndex将估算值和平均级别设置为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 });
    }
}

i逐步浏览代码并看到它正确运行,但是单元格不能编辑。我有CellEdit:在网格级别上进行true,但是当我试图在上面的代码中动态设置它时,我没有在列上设置可编辑的属性。任何帮助将不胜感激!

您这样做的方式没有任何效果

我可以推荐其他方法来做到这一点。

如果单元格具有"不可编辑的细胞",则该单元格是不可编辑的,而是在Colmodel中设置为可编辑。请参阅此处的文档

这样可以使用Cellattr函数,因为它在创建过程中添加了属性。也可以在这里查看文档

将可编辑的属性设置为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;
         }
     }

对另一个字段做同样的事情。

最新更新