2011-12-20 54 views
0

我已经通过所有帖子,最终得到setCell与硬编码值,但不使用options.rowId。jqGrid自定义格式化程序集单元格不会与options.rowId

function StatusFormatter(cellvalue, options, rowObject) { 
    if (cellvalue == 'C'){ 
     jQuery("#list").setCell(options.rowId , 'SOORDLINE', '', { color: 'red' }); 
     jQuery("#list").setCell("[2.000]", 'SOORDLINE', '', { color: 'red' }); 
     jQuery("#list").setCell('[2.000]', 'SOREQDATE', '', { color: 'red' }); 
     jQuery("#list").setCell(options.rowId, 'SOPRICE', '', { color: 'red' }); 
    } 
    return cellvalue; 
    }; 

FIRST和LAST行不工作,但2硬编码rowId工作。我检查了option.rowId中返回的内容,它们与硬编码值相同(根据当然行的不同,我错过了什么?请帮忙,我没有看到行或值之间的区别。

EDITED-

我尝试了答案,这似乎是我需要什么。我尝试了以下

 { name: 'SOORDLINE', index: 'SOORDLINE', width: 25, search: false ,celattr: function() { return ' style="color: red"'; } 
}, 

为了aleast让他们都红之前,我一头扎进了逻辑,它没有为我做任何事

回答

1

对不起,但你用custom formatter in 绝对错误的方式。自定义格式化程序的目标是提供HTML片段以填充相应列中单元格的内容。所以在之前StatusFormatter将被称为,id将等于options.rowId的行将被创建。此外,出于性能目的,通常使用gridview: true。在网格的全部内容(网格的整个主体)将首先作为字符串构建并且之后将在一次操作中被放置在网格体中的情况下。它提高了性能,因为放置任何元素后,Web浏览器必须重新计算页面上所有其他元素的位置。

如果你要设置的文字颜色的SOORDLINE细胞,你应该cellattr代替:

celattr: function() { return ' style="color: red"'; } 

celattr也可以使用的形式celattr: function (rowId, cellValue, rawObject) {...},你可以测试所代表的价值的rawObject财产对于任何列,并根据单元格值返回单元格样式。

或者,您可以枚举loadComplete中的行,并在<tr>元素上设置样式,而不是为每行设置相同的样式。以the answer为例。

+0

注:我确实得到它的工作,你的例子只有'l'cellattr,而不是2,我通过源代码在示例中看到了差异。 – 2011-12-20 23:57:43

+0

当分组处于ON状态时,此解决方案似乎无效。而当你排序时,这个例子中的属性就会消失。 – 2011-12-21 00:22:00

+0

我通过关闭loadonce来解决颜色问题我猜属性不会在行被混洗时继续进行,并且celattr不会被重新实现。只是一个猜测。 – 2011-12-21 01:10:57

相关问题