extjs 根据值更改网格单元格背景

Posted

技术标签:

【中文标题】extjs 根据值更改网格单元格背景【英文标题】:extjs change grid cell background based on value 【发布时间】:2013-11-23 03:23:31 【问题描述】:

我将渲染器应用于我的网格列, 但背景颜色没有改变:

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

但没有效果。

有什么想法吗?

【问题讨论】:

【参考方案1】:

试试

.x-grid-cell.category-matching 
    background-color:green;

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

【讨论】:

另外,如果您可以发布网格的渲染 html,将会很有帮助。【参考方案2】:

试试这个...

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

它对我有用。

【讨论】:

也适用于我,除非您需要添加“返回值”,否则您将得到一个空列。【参考方案3】:

参考这些例子

Ext.onReady(function()
    Ext.create('Ext.data.Store', 
        storeId:'simpsonsStore',
        fields:['name', 'email', 'change'],
        data:'items':[
             'name': 'Lisa',  "email":"lisa@simpsons.com",  "change":100  ,
             'name': 'Bart', "email":"bart@simpsons.com", "change":-20  ,
             'name': 'Homer', "email":"home@simpsons.com",  "change":23   ,
             'name': 'Marge', "email":"marge@simpsons.com", "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;

【讨论】:

这些值来自商店,所以我没有改变任何东西。但对于进一步的用例,它会很有用!【参考方案4】:

灵感来自 Select Smile... 这对我有用:

    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

就是这样。

ps。在 ExtJS v2.2.1 下完成

【讨论】:

【参考方案5】:
renderer: function (value, metaData) 
    if (parseInt(value) > 0) 
        metaData.tdStyle = 'background-color:#ffaaaa';
    
    return value

【讨论】:

即使你的代码解决了OP问题,还是建议在你的代码sn-p中添加一些描述性文字。【参考方案6】:

你可以像这样在类中设置样式:

js:

columns: 
        items: [
           
                ...
                innerCls: 'column-ltr',

           ]

css:

.column-ltr
   direction :rtl;

【讨论】:

以上是关于extjs 根据值更改网格单元格背景的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 4.2网格单元格编辑如何将列值与组合显示值绑定

根据存储在其他单元格中的 RGB 值动态更改单元格的背景颜色

根据其他节点的条件或行值动态更改 AG 网格上一个单元格样式

JavaScript Extjs:根据其他字段的条件,使用自定义类渲染网格中的单元格

如何根据ext js网格中另一个单元格的值向单元格添加类

在网格单元格中的 extjs 中,我必须显示字符串数组中的值列表,该字符串数组是记录的一部分