-
DataGrid 单元格 字体颜色
2009-06-17 23:39/点击数()
原文链接:http://flex.joelove.cn/datagrid-row-color/ DataGrid里面的单元格默认的字体颜色都是黑色,很多时候都需要根据不同的数据进行不同的颜色筛选,今天我就遇到了这个问题,共享一个自己弄完的Demo,强调一下,是改变 某一行的单元格字体颜色 而不是
原文链接:http://flex.joelove.cn/datagrid-row-color/
DataGrid里面的单元格默认的字体颜色都是黑色,很多时候都需要根据不同的数据进行不同的颜色筛选,今天我就遇到了这个问题,共享一个自己弄完的Demo,强调一下,是改变
某一行的单元格字体颜色
而不是改变单元格的背景颜色,
啰嗦了一下,免得有人搞错(刚开始领导的意思就被我这样误解了,
)。
或许你是直接使用itemRenderer,然后override itemRenderer的set data()方法,在set data方法里面进行判断,这样表面虽然可行,但是点击表头进行排序,或者拖动滚动条时,就会因为DataGrid 的updateDisplayList影响到颜色与对应的行数据混乱现象,这种现象网上很多,例如DataGrid内嵌CheckBox问题,等等。
我的解决方法是之间在数据源进行操作,不管你怎么updateDisplayList,都不关我事!
我自定义了一个MyDataGrid类,继承DataGrid,override set dataProvider方法,在里面做判断,判断的权力交给了调用者。ControlDataField属性是判断凭据的引用,也就是等下通过这个值进行判断,如果没有设置,就和一般的DataGrid没有什么区别了。
ControlFunction属性就是判断方法,如果你是最简单的数字正负判断的话,大可不必设置这个属性,直接交给MyDataGrid控制,如下面代码,通过Price属性进行正负数字判断:
<local:MyDataGrid ControlDataField="Price" dataProvider="{DGArray1}"> <local:columns> <mx:DataGridColumn dataField="Artist" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="Album" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="money" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="Price" itemRenderer="MyDGIRenderer"/> </local:columns> </local:MyDataGrid>
如果判断凭据的值需要特殊对待,就需要自定义处理方法,如下,通过ControlFunc方法,对money凭据进行处理,返回对应的颜色值:
<local:MyDataGrid ControlFunction="{ControlFunc}" ControlDataField="money" dataProvider="{DGArray}"> <local:columns> <mx:DataGridColumn dataField="Artist" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="Album" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="money" itemRenderer="MyDGIRenderer"/> <mx:DataGridColumn dataField="Price" itemRenderer="MyDGIRenderer"/> </local:columns> </local:MyDataGrid>private function ControlFunc(data:Object):uint{ data=data.toString().substring(0,data.toString().lastIndexOf("万")); var value:Number=Number(data); if(value>0){ return 0xff0000; }else if(value<0){ return 0x0000ff; } return null; }不多说了,有想法的自己下载看看吧!另外说明一下ControlFunction, ControlDataField, dataProvider,值的设置问题,最好按照这种顺序,因为我没有做其他的判断,不然的话结果还是和普通的DataGrid一样!
<local:MyDataGrid ControlFunction="{ControlFunc}" ControlDataField="money" dataProvider="{DGArray}">老是觉得那个地方有点欠妥,大兄弟、大妹子要是有好意见的话,记得留个言……
上一篇:Flex DataGrid 分页
