jqgrid:如何在生成时设置特定于单元格的CSS类

我正在构build一个jqgrid,需要不同的背景(或一般来说,一个不同的css类)值的特定单元格。 我知道哪些单元格需要在生成时应用该类的数据被发送到jqgrid。 我希望能够在jqgrid行结构中为每个特定的单元格指示一个类:

<rows> <page> </page> <total> </total> <records> </records> <row> <cell>1.00</cell> <cell class='errorClass'>15.00</cell> <cell class='warningClass'>9.00</cell> … </row> <row> <cell>1.00</cell> <cell>2.00</cell> <cell>1.15</cell> … </row> … </rows> 

我知道我可以在发送数据后进行这种格式化,但我希望看到格式化的网格,而不是事后。

我已经通过在单元格中设置标签来达到我想要的效果:

 <cell><span class='warningClass'>3.00</span></cell> 

但是它并没有为整个单元格设置类,只是内部的数据,只有高亮的文本,而不是整个单元格。

我感兴趣的问题,所以我给你做了演示 。

在这里输入图像描述

如果你想在网格单元格( <td>元素)上设置一些自定义的属性,像classtitlecolspanstyle , cellattr是最好的方法(见这里的细节)。 cellattr接近自定义格式化程序function,但允许定义单元格的属性而不是单元格包含。

在演示中我使用了下面的XMLinput:

 <?xml version='1.0' encoding='utf-8'?> <rows> <page>1</page><total>1</total><records>2</records> <row id='13'> <cell>1.00</cell> <cell class='ui-state-error'>15.00</cell> <cell>9.00</cell> </row> <row id='12'> <cell>1.00</cell> <cell>2.00</cell> <cell class='ui-state-highlight'>1.15</cell> </row> </rows> 

cellattr如下

 cellattr: function () { var c = $('cell:eq(1)', arguments[2]).attr('class'); return c ? " class='" + c + "'": ""; } 

在第二个(':eq(1)')单元的'class'属性将用于格式化的情况下。

从devise的angular度来看,我build议你不要直接使用类名作为属性。 像format="error"这样一个可以转换为class='ui-state-error'的替代属性有一些优点。 它可以将信息从格式化提示中分离出来,直接从HTML指令中分离出来。

使用Oleg的答案我放在一起,并使用dynamic创build的colModel(colM)testing以下我的情况:

 for each (var colModelItem in colM) { colModelItem.cellattr = function (rowId, val, rawObject, cm, rdata){ var pos = findColModelInList(cm, colM); var srchText = 'cell:eq(' + pos + ')'; var c = jQuery(srchText, arguments[2]).attr('class'); return c ? " class='" + c + "'": ""; }; } 

哪里

 function findColModelInList(colModel, modelList) { var index = 0; var retval = -1; for each (var modelItem in modelList) { if (modelItem.name == colModel.name) { retval = index; } index++; } return retval; }