How to change extjs grid single cell background color depending on value changes?
要更改整个行的背景色,我们可以使用getRowClass,但是如何仅对一个单元格和特定列执行相同的逻辑...任何想法?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //EXTJS viewConfig: { getRowClass: function(record, index) { var c = record.get('change'); if (c < 0) { return 'price-fall'; } else if (c > 0) { return 'price-rise'; } } } //CSS .price-fall { background-color: #FFB0C4; } .price-rise { background-color: #B0FFC5; } |
编辑:
有一种方法可以通过以下方式实现:
1 2 3 4 5 6 7 8 | function change(val){ if(val > 0){ return '<span style="color:green;">' + val + '</span>'; }else if(val < 0){ return '<span style="color:red;">' + val + '</span>'; } return val || 0; } |
然后是:
1 2 3 | ... {header: 'Change', width: 75, sortable: true, renderer: change, dataIndex: 'change', align: 'center'} ... |
但是这样,网格会因从白色到彩色背景的变化而变形... ???
还有其他想法吗?
编辑
将自定义css应用于列后,如何在短时间内删除该列,使其在值更改后闪烁一次?类似于
有什么想法吗?
我建议使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Ext.create('Ext.grid.Panel', { columns: [ // ... { header: 'Change', dataIndex: 'change', tdCls: 'x-change-cell' }, // ... ], viewConfig: { getRowClass: function(record, index) { var c = record.get('change'); if (c < 0) { return 'price-fall'; } else if (c > 0) { return 'price-rise'; } } }, // ... }); |
CSS:
1 2 3 4 5 6 7 8 | .price-fall .x-change-cell { background-color: #FFB0C4; color:red; } .price-rise .x-change-cell { background-color: #B0FFC5; color:green; } |
这是演示。
我做另一件事时发现了另一种方法;
在列定义中:
1 2 3 4 5 6 7 8 9 10 11 12 | { dataIndex: 'invoicePrintedFlag', header: 'Fatura', width: 50, renderer : function(value, metadata, record) { if (record.get('invoiceAddressId') != null){ metadata.tdCls = metadata.tdCls +" alertedCell"; } return '<span class="iconbox icon-'+ value +'"></span>'; } } |
如果完全操纵单元,则可以使用
1 | metadata: Object {tdCls:"", style:""} |
如果使用样式,它将被添加到TD
中的内容DIV中
1 2 3 4 5 | <td class=" x-grid-cell x-grid-cell-gridcolumn-1067" id="ext-gen1432"> // Content comes here </td> |
如果使用
的类
1 2 3 4 5 | <td class=" x-grid-cell x-grid-cell-gridcolumn-1067 alertedCell" id="ext-gen1462"> // Content comes here </td> |
此外,您还可以根据需要返回html。
1 2 3 4 5 6 7 8 9 | renderer: function(value, metaData, record, rowIndex, colIndex, store, view) { metaData.tdAttr = 'style="background-color:#b0e987;color:black;"'; value=Ext.util.Format.number(value, '$ 0,000.00'); return value; }, |