部分在EXTJS网格单元格中设置文本颜色
-
21-12-2019 - |
题
我有一个extjs 4.2网格列(作为PHP MVC 3网站的一部分),与项目的一组流程的状态有关。此列返回一个已完成的每个进程的三个字母缩写字符串,例如,由空格分隔,例如世代odicetagcode将是已被清洗,准备和切割的项目,并且世代古代码将是已被洗涤,擦洗和擦洗的物品去皮。
但是,所需的功能是检索所有的过程,以及每个条目的样式以显示是否已完成;Zhem将是生成的,将表示已被洗涤和准备但未切割的项目。这可能吗?这是它在我将值和相应的样式格式传递为数组对象而不是字符串的东西,而不是字符串,并通过单元格的渲染器生成所需的格式,或者我对网格列的渲染器的能力持乐观态度?
解决方案
列渲染器为您提供输出HTML的运行时,您几乎无法高估该功能...
我不确定我完全理解你的问题,但这是一个起动器的例子。给定可能的进程列表,它会显示每个记录的所有进程,并突出显示此记录标记的进程(示例小提琴):
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;
}
. 其他提示
哈伊,rixo打败了我。他是对的,您需要使用列的renderer
属性。我也创建了一个小提琴,万一你可能需要查看另一个例子: https://fiddle.sencha。com /#fiddle / 872
不隶属于 StackOverflow