Slickgrid使用一列来包含每行的颜色?

时间:2014-09-24 14:09:53

标签: javascript slickgrid

是否可以在网格中添加隐藏列以存储十六进制颜色。然后使用此列中的值来设置该行的背景颜色样式?

1 个答案:

答案 0 :(得分:0)

通过向网格提供有关各行的metadata,可以最直观地完成整行的样式设置。使用Slickgrid数据视图时,由于可能需要支持分组,因此这会变得更具挑战性,因为这些组通过自己的groupItemMetadataProvider提供一些信息。与信息provided here类似,可以使用一些选项。尝试格式化每个单元格,留下一些可见的空白,并可能导致空单元格出现问题。

因此,我会为您支持的每种颜色提供相应的css类。设置getItemMetadata以返回每行的相应css。

var defaultImpl = dataView.getItemMetadata

var override = function(row){

  if(!defaultImpl(row)) {
   var item = dataView.getItem(row)
   /*
     assuming the color is stored similar to #000000 ... strip off the #
     in addition I've prefixed my css classes with 'color_'
   */ 
   var color = item.color ? 'color_' + item.color.substr(1, item.color.length) : ""
   var metadata = item.color ? {cssClasses: color} : null
   return metadata
  }
   return defaultImpl(row)
}

dataView.getItemMetadata = override

注意:在网格可用的上下文之外的任何样式尝试都会在滚动时被删除

Fiddle