Изменить цвет ячейки cfgrid (html) на основе данных
Я хотел бы изменить цвет ячейки в зависимости от состояния в cfgrid.
Например:
- Если статус записи "Просрочено", ячейка станет красной, а "Переполнение" выделено жирным шрифтом.
- Если статус записи "Должен" (в течение 30 дней), ячейка станет желтой с "Жирным шрифтом".
- Если статус записи Текущий (дата должна быть более 30 дней), то ячейка будет зеленой, а Текущий выделен жирным шрифтом....
Я мог только найти рендеринг для cfgridrow и cfgridcolumn.
2 ответа
Вам следует прибегнуть к свойству визуализации столбцов, предоставленному ExtJS. Рендерер для столбца получает три аргумента, второй - мета-объект, для которого вы можете установить свойство attr, которое устанавливается как атрибут элемента cell dom. Вы можете предоставить некоторые CSS-стили для ячейки, например:
var renderer = function(value, meta, record){
if(value == "Overdue") { meta.attr = 'style="color:red;font-weight:bold"'; }
if(value == "Due") { meta.attr = 'style="color:yellow;font-weight:bold"'; }
if(value == "Current") { meta.attr = 'style="color:green"'; }
return value;
}
Проверьте setRenderer в документации Ext.grid.ColumnModel
Я использую что-то похожее на вашу потребность в столбце в сетке для отображения срока годности:
{
header: 'Expiration Date',
dataIndex: 'ExpireDate',
renderer: function (value, metaData, record, rowIndex, colIndex, store) {
if ( record.get ( 'ExpireDate' ) < new Date ( ).clearTime ( ) ) {
metaData.css += ' y-grid3-expired-cell';
value = '';
}
if ( record.get ( 'ExpireDate' ).format ('m/d/Y') == '12/31/9999' ) {
metaData.css += ' y-grid3-non-expired-cell';
value = '';
}
value = (value == '') ? '' : record.get ('ExpireDate').format ('m/d/Y');
}
return value;
}
},
использование классов CSS является более надежным решением, мои предложения определены следующим образом:
.y-grid3-expired-cell {
background: #AA0000;
}
.y-grid3-non-expired-cell {
background: #00AA00;
}
единственное, что вам нужно сделать, это добавить свою собственную логику и стили...