jqGrid根据单元格值在Grid中着色整行

Tho*_*mas 7 jqgrid

我知道之前有人问过这个问题,但是我无法让它运行起来,我没有尝试过.

如果它的值不是1,我想在网格中着色一行 - 我为此使用自定义格式化程序.格式化程序本身有效,这不是问题.

我尝试了迄今为止我在网上找到的多种方法 - 添加一个类,直接添加CSS代码,使用setRowData,使用setCell....

这是我的例子 - 它们都不适合我(Linux,ff363) - 任何指针都会非常感激.

27.05.2010_00:00:00-27.05.2010_00:00:00是我的行ID

<style>
.state_inactive {
            background-color: red !important;
        }
.state_active {
    background-color: green !important;
}
</style>

function format_state (cellvalue, options, rowObject)
{
    var elem='#'+options.gid;
    if (cellvalue != 1) {

        jQuery('#list2').setRowData(options.rowID,'',
                                    {'background-color':'#FF6F6F'});

        jQuery('#list2').setRowData('27.05.2010_00:00:00-27.05.2010_00:00:00',
                                    '',{'background-color':'#FF6F6F'});

        for (var cnt=0;cnt<rowObject.length;cnt=cnt+1) {
            jQuery(elem).setCell(options.rowId,cnt,'','state_inactive','');

            jQuery(elem).setCell('"'+options.rowId+'"',cnt,'','state_inactive');

            jQuery(elem).setCell('"'+options.rowId+'"',cnt,'5',
                                 {'background-color':'#FF6F6F'},'');
        }
    } else {
        for (var cnt=0;cnt<rowObject.length;cnt=cnt+1) {
            jQuery(elem).setCell(options.rowId,cnt,'','state_active','');
        }
    }
    <!-- dont modify, we simply added the class above-->
    return cellvalue;
}
Run Code Online (Sandbox Code Playgroud)

Ole*_*leg 13

在我看来,你的主要问题是你没有设置'背景颜色'的风格.你应该从行中删除'ui-widget-content'类(来自<tr>元素)

jQuery("#"+ options.rowId,jQuery('#list2')).removeClass('ui-widget-content');
Run Code Online (Sandbox Code Playgroud)

在添加类之前,state_activ或者state_inactive,因为jQuery UI类'ui-widget-content'被定义.ui-widget-content

{
border: 1px solid #fad42e;
background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x;
color: #363636;
}
Run Code Online (Sandbox Code Playgroud)

并且只有设置CSS 'background-color'才能真正改变背景颜色.所以尝试使用类似的东西

var trElement = jQuery("#"+ options.rowId,jQuery('#list2'));
trElement.removeClass('ui-widget-content');
trElement.addClass('state_active');
Run Code Online (Sandbox Code Playgroud)

  • 由于`id`中的特殊符号,你可能会遇到这样的问题.你使用':',' - '和'.'.jqGrid在`id`中有一些符号有问题.要验证这一点,请尝试使用更简单的ID形式.此外,一些字符对jQuery具有空间意义.所以像`jQuery("#"+ options.rowId)`这样的结构可能是jQuery的错误解释.如果所有都可以使用简单的ID,那么您可以实现某种形式的id值的编码/解码. (2认同)

小智 12

对于那些在这个主题上寻找真正答案的人来说..

这个有效!

afterInsertRow : function(rowid, rowdata)
{
    if (rowdata.colmodelnamefield == "something")
    {
        $(this).jqGrid('setRowData', rowid, false, 'StyleCss');
    }

}
Run Code Online (Sandbox Code Playgroud)

在另一个文件样式表中自定义CSS


.StyleCss{ background-color:red !important; }
Run Code Online (Sandbox Code Playgroud)

别忘了!重要的是要覆盖主题ui roller


小智 5

我正在尝试解决方案很长一段时间,最后从所有的例子和建议中结合起来对我有用的东西.当然,您需要为此定义自定义css样式.希望这会有所帮助,尽管它可能产生潜在的速度问题.

...

loadComplete: function() {

      var rowIDs = jQuery("#grid").getDataIDs(); 
      for (var i=0;i<rowIDs.length;i=i+1){ 
        rowData=jQuery("#grid").getRowData(rowIDs[i]);
        var trElement = jQuery("#"+ rowIDs[i],jQuery('#grid'));
        if (rowData.statusID > 5) { 
            trElement.removeClass('ui-widget-content');
            trElement.addClass('rowColorRED');
        }else{ 
          if (rowData.statusID == 1){
            trElement.removeClass('ui-widget-content');
            trElement.addClass('rowColorGREEN');
          }
        }
      }
  },
Run Code Online (Sandbox Code Playgroud)

...