10

如何根据严重性条件更改数据网格中的行颜色?我是这个 EXTJS 主题的新手。我曾经阅读器读取,存储到存储和写入器写入数据。将所有数据提取到网格后,如何根据严重性条件更改数据网格中的行颜色?你能解释一下我的代码工作吗?

4

3 回答 3

23

您可以使用GridView类 ( Ext.grid.GridView ) 来操作网格的用户界面。您还可以查看GridPanel的viewConfig属性。这是一个例子:

viewConfig: {
        //Return CSS class to apply to rows depending upon data values
        getRowClass: function(record, index) {
            var c = record.get('change');
            if (c < 0) {
                return 'price-fall';
            } else if (c > 0) {
                return 'price-rise';
            }
        }
    }

ps:示例取自 ExtJS API 文档本身

价格下跌和价格上涨是相应设置背景颜色的 CSS。例如:

.price-fall { 
 background-color: #color;
}

.price-rise {
 background-color: #color;
}
于 2011-02-15T07:03:25.370 回答
4

您可以使用(参见Ext JS API)的getRowClass方法来完成。GridView

API 文档中引用的示例:

viewConfig: {
    forceFit: true,
    showPreview: true, // custom property
    enableRowBody: true, // required to create a second, full-width row to show expanded Record data
    getRowClass: function(record, rowIndex, rp, ds){ // rp = rowParams
        if(this.showPreview){
            rp.body = '<p>'+record.data.excerpt+'</p>';
            return 'x-grid3-row-expanded';
        }
        return 'x-grid3-row-collapsed';
    }
},
于 2011-02-15T06:59:43.677 回答
0

您可以使用列模型中的列渲染器,然后分配一个 CSS 类,如下所示:

所以,customRenderer 函数:

`

function customRenderer(value, metaData, record, rowIndex, colIndex, store) {
    var opValue = value;
    if (value === "Rejected") {
        metaData.css = 'redUnderlinedText';
    } else if (value === "Completed") {
        metaData.css = 'greenUnderlinedText';
    } else if (value === "Started") {
        metaData.css = 'blueUnderlinedText';
    }
    return opValue;

}`

然后你的专栏:

        {
            header: 'Your Column Header',
            dataIndex: 'your_data_index',
            renderer: customRenderer
        }

那么你的css可能是这样的:

.redUnderlinedText {
    background-color: blue,
    color: red;
    text-decoration: underline;
    cursor: pointer;
}
于 2011-02-15T13:26:36.283 回答