Jqgrid:动态更改行颜色

时间:2012-08-10 14:31:00

标签: jqgrid

我正在使用Jqgrid。我想根据列值更改行颜色。我可以根据此列值更改行的类。但我需要的是使用从服务器获取的颜色值更改字体颜色。如何做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以使用列custom formatter来完成此操作。

格式化程序将是您使用以下格式编写的javascript函数:

function myformatter ( cellvalue, options, rowObject )
{
     // format the cellvalue to new format
     return new_formated_cellvalue;
}

网格将路由这些值:

  • cellvalue - 是要格式化的值。
  • options - 是一个包含有关的信息的对象 细胞/行。
  • rowObject - 是由网格确定的格式的行数据 数据类型选项。

因此,在自定义格式化程序中,您可以获取单元格值并对其应用类或内联字体样式,如下所示:

function myformatter ( cellvalue, options, rowObject )
{
    if (cellvalue == "red")
         return '<font color="red">' + cellvalue + '</font>';//or use classes
    else
         return '<font color="blue">' + cellvalue + '</font>';//or use classes
}

然后在您的列定义中,您只需指定将使用此格式化程序的列,就像这样(添加到需要字体颜色的任何列):

colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:myformatter},
      ...
   ]

答案 1 :(得分:1)

或者你也可以试试这个,在loadComplete中,得到像这样的jqgrid的所有行ID

var allRowsOnCurrentPage = $('#grid').jqGrid('getDataIDs');

并且假设您在jqgrid中有名称和公司列,并且有两行。对于一行数据是这样的

姓名:xxx公司:yyy

并且对于第二行,您有这样的数据

姓名:aaa公司:bbb

所以你在for循环中得到了Name值

for(int i=1;i<=allRowsOnCurrentPage.length;i++)
{
var Name=$('#grid').jqGrid('getCell',i,'Name');
if(Name="aaa")
{
$('#grid').jqGrid('setCell',i,"Name","",{'background-color':'yellow');
}
}

代码未经过测试,但应该有效。

答案 2 :(得分:0)

在colModel中使用cellattr属性

cellattr: function (rowId, value, rowObject, colModel, arrData){
return 'style=background-color:black;'; }