2013-11-11 5 views
6

я применил визуализатор к моей сетке колонку, но цвет фона не меняется:ExtJS фона изменения ячейки сетки на основе значения

renderer: function(value, meta) { 
    if (parseInt(value) > 0) { 
     meta.tdCls = 'category-matching'; return value; 
    } 
    else { 
     meta.tdCls = 'category-not-matching'; return value; 
    } 
} 

CSS:

.x-grid-cell .category-matching { 
    background-color:green; 
} 
.x-grid-cell .category-not-matching { 
    background-color:red; 
} 

Я также попытался

.grid-cell-inner 

и

background-color:red; !important 

но без эффекта.

Любая идея?

ответ

33

Попробуйте это ...

renderer : function(value, meta) { 
    if(parseInt(value) > 0) { 
     meta.style = "background-color:green;"; 
    } else { 
     meta.style = "background-color:red;"; 
    } 
    return value; 
} 

Это работает для меня.

+0

Это тоже работает для меня! – Roman

+2

Работает для меня тоже, за исключением того, что вам нужно добавить «возвращаемое значение» или вы получите пустой столбец. – Lawrence

+0

@Lawrence, что было бы правильно! Спасибо – afarazit

0

Попробуйте

.x-grid-cell.category-matching { 
    background-color:green; 
} 
.x-grid-cell.category-not-matching { 
    background-color:red; 
} 
+0

Кроме того, было бы полезно, если бы вы могли опубликовать отображаемый HTML-файл сетки. – BillyTom

+0

никакого эффекта с этим – Roman

1

относятся к этим например

Ext.onReady(function(){ 
    Ext.create('Ext.data.Store', { 
     storeId:'simpsonsStore', 
     fields:['name', 'email', 'change'], 
     data:{'items':[ 
      { 'name': 'Lisa', "email":"[email protected]", "change":100 }, 
      { 'name': 'Bart', "email":"[email protected]", "change":-20 }, 
      { 'name': 'Homer', "email":"[email protected]", "change":23 }, 
      { 'name': 'Marge', "email":"[email protected]", "change":-11 } 
     ]}, 
     proxy: { 
      type: 'memory', 
      reader: { 
       type: 'json', 
       root: 'items' 
      } 
     } 
    }); 

    Ext.create('Ext.grid.Panel', { 
     title: 'Simpsons', 
     store: Ext.data.StoreManager.lookup('simpsonsStore'), 
     columns: [ 
      { header: 'Name', dataIndex: 'name' }, 
      { header: 'Email', dataIndex: 'email', flex: 1 }, 
      { header: 'Change', dataIndex: 'change', tdCls: 'x-change-cell' } 
     ], 
     height: 200, 
     width: 400, 
     viewConfig: { 
      getRowClass: function(record, index) { 
       var c = record.get('change'); 
       if (c < 0) { 
        return 'price-fall'; 
       } else if (c > 0) { 
        return 'price-rise'; 
       } 
      } 
     }, 
     renderTo: Ext.getBody() 
    }); 
}); 

CSS:

.price-fall .x-change-cell { 
    background-color: #FFB0C4; 
    color:red; 
} 
.price-rise .x-change-cell { 
    background-color: #B0FFC5; 
    color:green; 
} 
+0

значения из магазина, поэтому я ничего не меняю. Но для дальнейших случаев использования это будет полезно! – Roman

1

Вдохновленный Выбрать Улыбки ... это работало для меня:

var myRender = function (value, metaData, record, rowIndex, colIndex, store, view) { 
     if (parseInt(value) < 0) { 
      metaData.attr = 'style="background-color:#ffaaaa !important;"'; 
     } 
     return value 
    }; 

и поле

{id: 'dta', dataIndex: 'days_to_arrival', renderer: myRender} 

все.

пс. сделано в рамках ExtJS v2.2.1

0
renderer: function (value, metaData) { 
    if (parseInt(value) > 0) { 
     metaData.tdStyle = 'background-color:#ffaaaa'; 
    } 
    return value 
} 
+0

это работает с extjs 6.5 –

+1

Объясните, почему этот код поможет. – Daniel

+1

Даже если ваш код решает проблему OP, рекомендуется добавить часть описательного текста в фрагмент кода. –

Смежные вопросы