【发布时间】:2012-03-16 19:21:48
【问题描述】:
我的移动应用程序中有一个 DataGrid(我知道,我知道,但目前没有其他解决方案),即数值。根据单元格的值,文本会被着色。我的大问题是,这对于超过 5 行的数据不起作用。我认为问题在于设置文本功能(我在其中设置颜色格式)无法跟上单元格更改的数量,并根据行的最后更新单元格设置文本格式。 我考虑了一个列项渲染器,以便渲染器只获取该列的值,而不是该行的整个数据。
这样的事情可能吗?
仅供参考,这是我当前的项目渲染器(再次,这适用于几行,对于 5+ 快速变化的数据,这不再适用,即使它们的数据没有改变,单元格也会被格式化)。
public class ColorGridItemRenderer extends DefaultGridItemRenderer
{
public function ColorGridItemRenderer() {
super();
}
override public function set text(value:String):void {
if (!value)
value = "";
if(Number(value) > Number(text) && text!="")
setStyle("color", 0x40c040);
else if(Number(value) < Number(text) && text!="")
setStyle("color", 0xf05050);
else
setStyle("color", 0xc1c1c1);
}
super.text = value;
}
}
编辑: 我只是仔细检查了一下,不得不恢复我之前的陈述。单行工作正常,但第二行已经弄乱了颜色格式。似乎数据网格以某种方式将这些值组合在一起。 用set data方法做颜色格式化,效果一模一样;
override public function set data(value:Object):void {
if(value && data) {
label = value[column.dataField];
if(value[column.dataField] > _oldVal && _oldVal != 0)
setStyle("color", 0x40c040);
else if(value[column.dataField] < _oldVal)
setStyle("color", 0xf05050);
else
setStyle("color", 0xc0c0c0);
_oldVal = value[column.dataField];
}
super.data = value;
}
编辑2: 我关于网格弄乱 ItemRenderer 数据的假设似乎是正确的。 设置数据方法中的一个简单跟踪 (trace("old: " + _oldVal + "new : " + value[column.dataField]);) 显示,不知何故,下一个网格行的值(如果有 2 个)得到used 以及 _oldVal 获取下一行的旧值。
【问题讨论】:
-
天哪,我很愚蠢。不调用 super 可能实际上是个好主意... ;) 问题解决了。
标签: actionscript-3 mobile datagrid flex4 itemrenderer