您要做的第一件事是以css 接受的格式生成颜色值。为此,您可以使用Ext.data.field.Field 的calculate 方法。还有很多其他方法可以做到这一点。
Ext.define('Color', {
extend: 'Ext.data.Model',
fields: [{
name: 'color',
type: 'string'
}, {
name: 'displayColor',
type: 'string',
calculate: function (data) {
var color = data.color;
//parse your value to CSS Colors here
return '#FF0000';
}
}]
});
要在列中显示背景颜色,我将创建一个新的列小部件。这将负责绘制单元格。
Ext.define('Ext.ux.BackgroundVisualize', {
extend: 'Ext.Gadget',
xtype: ['myBackgroundwidget'],
template: [{
reference: 'backgroundEl'
}],
defaultBindProperty: 'value',
setValue: function (value, oldValue) {
this.el.up('td').setStyle('background', value);
}
});
这个新的小部件只能用作网格中的一列。
{
text: 'Preview',
xtype: 'widgetcolumn',
widget: {
xtype: 'myBackgroundwidget',
bind: '{record.displayColor}'
}
}
这是完整的例子:
https://fiddle.sencha.com/#view/editor&fiddle/22ln