1

我正在研究一个 EXTJS 网格,其行颜色将根据表中的字段(状态字段)值设置。

用户可以编辑该行的字段,点击更新后,该行的颜色将根据为该行设置的状态字段值而改变。

我需要从数据库中的表中设置行背景颜色。

目前我正在使用以下代码检查状态字段值来设置不同的 css 类。

getRowClass: function(record, rowIndex, rp, ds)
{
    if( record.get('status') == 'xxxxx' )
    {
        return 'status-xxxxx';
    }
    else if( record.get('status') == 'yyyyy' )
    {
        return 'status-yyyyy';
    }
    else
    {
        return 'status-zzzzzz';
    }
}

我在商店中有颜色以及每行的状态值。

但我需要从数据库中获取颜色并将其设置为行背景。

任何人都可以帮助我实现这一目标。

谢谢

4

1 回答 1

4

如果要用作background-color行记录中的行颜色,则必须在渲染行后设置每行 td 元素的背景颜色。

你可以这样做refreshgridView.所以在网格配置中你应该定义这样的东西:

viewConfig: {
    listeners: {
        refresh: function(view) {      

            // get all grid view nodes
            var nodes = view.getNodes();

            for (var i = 0; i < nodes.length; i++) {

                var node = nodes[i];

                // get node record
                var record = view.getRecord(node);

                // get color from record data
                var color = record.get('color');

                // get all td elements
                var cells = Ext.get(node).query('td');  

                // set bacground color to all row td elements
                for(var j = 0; j < cells.length; j++) {
                    console.log(cells[j]);
                    Ext.fly(cells[j]).setStyle('background-color', color);
                }                                       
            }
        }      
    }
}

摆弄现场示例:https ://fiddle.sencha.com/#fiddle/2m8

于 2014-01-15T15:08:02.083 回答