css - 在 ExtJS 网格单元格中部分设置文本颜色

标签 css extjs formatting extjs4.2

我有一个 ExtJS 4.2 网格列(作为 PHP MVC 3 网站的一部分)与一组元素进程的状态相关。此列返回每个已完成进程的三个字母缩写字符串,以空格分隔,例如 Was Pre Cut将是一件已经清洗、准备和切割的元素,并且Was Scr Pee将是经过洗涤、擦洗和去皮的元素。

但是,所需的功能是检索所有 流程,并设置每个条目的样式以显示它是否已完成;例如 <green>Was Pre</green> Cut将表示已清洗和准备但未切割的元素。

这可能吗?这是我将每个进程的值和相应的样式格式作为数组对象而不是字符串传递,并通过单元格的渲染器生成所需的格式,还是我对网格列的渲染器的能力持乐观态度?

最佳答案

列渲染器为您提供了一个输出 HTML 的运行时,您很难高估它的功能...

我不确定我是否完全理解您的问题,但这是一个入门示例。给定可能的进程列表,它显示每个记录的所有进程,并突出显示为此记录标记的进程 (example fiddle):

var processes = ['Foo', 'Bar', 'Baz', 'Bat']; // all available processes

new Ext.grid.Panel({
    renderTo: Ext.getBody()
    ,width: 400
    ,height: 200
    ,forceFit: true

    ,store: {
        fields: ['id', 'status', 'statusDetails']
        ,data: [
            {id: 1, status: 'Foo Bar', statusDetails: ['Foo', 'Bar']}
            ,{id: 2, status: 'Bar Baz', statusDetails: ['Bar', 'Baz']}
            ,{id: 3, status: 'Baz Bat', statusDetails: ['Baz', 'Bat']}
        ]
    }

    ,columns: [{
        dataIndex: 'id'
        ,text: "ID"
        ,width: 40
    },{
        dataIndex: 'status'
        ,text: "Status"
        ,renderer: function(value, md, record) {
            md.tdCls = 'processes-cell'; // gives us a hook for CSS
            return Ext.Array.map(processes, function(process) {
                var statusDetails = record.get('statusDetails');
                // possible alternative:
                // var statusDetails = record.get('status').split(' ');
                return '<div class="process ' + process + ' '
                + (statusDetails.indexOf(process) !== -1 ? 'on' : 'off')
                + '">' + process
                + '</div>';
            }).join('');
        }
    }]
});

并根据您的心意设计风格。例如:

.processes-cell .process {
    display: inline-block;
    width: 25%;
    text-align: center;
    border: 1px solid white;
}
.processes-cell .process.off {
    background-color: lightpink;
}
.processes-cell .process.on {
    background-color: lightgreen;
}
.processes-cell .x-grid-cell-inner {
    padding: 1px;
}

关于css - 在 ExtJS 网格单元格中部分设置文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020096/

相关文章:

css - (ExtJS) 设置字段集表的行高

c - 解决问题的原因

android - 原生编程对移动开发有什么好处?

css - 如何在 CSS 中使用原生浏览器大纲?

html - 如何让行内 block 占据整行?

html - 我怎样才能把它放在水平内联 block 中?

javascript - 通过覆盖更改继承

c - 如何在我的包含十六进制字节字符的字符结构数组上正确地 fprintf

formatting - 如何在 Mathematica 中将 Row[] 的元素与底部或顶部对齐?

css - Compass Blueprint mixins 没有编译?