SlickGrid:如何遍历每一行并根据条件设置颜色?

时间:2013-10-21 14:10:27

标签: javascript slickgrid

我是SlickGrid的初学者。我想知道如何循环网格中的每一行并根据条件设置行背面颜色(例如:如果年龄介于20 - 40之间,行将具有蓝色,否则,它将具有红色)。

2 个答案:

答案 0 :(得分:7)

假设您正在使用Slick.Data.DataView,您可以修改getItemMetadata method以动态地将类添加到包含的行元素。我打算写这个,好像你的Slick.Data.DataView实例被称为dataView,在这里你去了:

dataView.getItemMetadata = metadata(dataView.getItemMetadata);

function metadata(old_metadata_provider) {
  return function(row) {
    var item = this.getItem(row);
    var ret  = (old_metadata_provider(row) || {});

    if (item) {
      ret.cssClasses = (ret.cssClasses || '');
      if (item.age >= 20 && item.age <= 40) {
        ret.cssClasses += ' blue';
      } else {
        ret.cssClasses += ' red';
      }
    }

    return ret;
  }
}

这会在行的元素中添加一类'blue''red'

答案 1 :(得分:1)

您需要使用格式化程序,以便列定义看起来像这样

{id: "delete", name: "Del", field: "del", formatter: Slick.Formatters.Delete, width: 15},

将格式化程序添加到像这样的slickgrid

(function ($) {
// register namespace
$.extend(true, window, {
    "Slick": {
        "Formatters": {                
            "Delete": DeleteLink
        }
    }
});


function DeleteLink(row, cell, value, columnDef, dataContext) {
    //Logic to present whatever you want based on the cell data
    return "<a href=\"javascript:removeId('contact', '" + dataContext.folderId + "', '" + dataContext.id + "')\"><img width=\"16\" height=\"16\" border=\"0\" src=\"/images/delete.png\"/></a>";
}

})(jQuery);