我在datagrid的一列中使用了以下itemrenderer。但是,我想以不同方式格式化datagrid的每一行。该列由数字组成,但有些需要格式化为Numbers,而其他则为货币等。另请注意,我有一个由0和1组成的附加列,其中0表示它应格式化为数字,1表示它应该是格式化为货币。
<?xml version="1.0" encoding="utf-8"?>
<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
focusEnabled="true">
<s:Label id="lblData" top="0" left="0" textAlign="center" verticalAlign="middle" right="0" bottom="0" text="{dataGridListData.label}" backgroundColor="#EDFB09"/>
<s:Rect left="0" right="0" top="0" bottom="0">
<s:stroke>
<s:SolidColorStroke color="0x000000" weight="1"/>
</s:stroke>
</s:Rect>
<fx:Script>
<![CDATA[
]]>
</fx:Script>
</s:MXDataGridItemRenderer>
关于我如何实现这样一个函数的任何帮助,我试图在itemrenderer的函数中使用dataGridListData.label,但是它给出了错误。
帮助谢谢
答案 0 :(得分:0)
dataGridListData对象应该已经包含了您需要的所有信息: columnIndex,rowIndex,dataField。
在简单的情况下,使用“elvis-operator”(?作为if语句的简写)非常方便:
(条件)? true-block:else-block
一些例子: color =“{(dataGridListData.rowIndex%2 == 0)?#00ff00:#0000ff}”(对于交替的行颜色) text =“{(dataGridListData.dataField ==”coolField“)?''Coool!':'Uncool'}”
答案 1 :(得分:0)
可以通过实现IDataRenderer,IDropInListItemRenderer来创建自定义渲染器。
ManageFilterValueEditor extends VBox implements IDataRenderer, IDropInListItemRenderer
这样可以访问_listdata和_data。列表数据表示行。在setData中,我们可以以
的形式访问该行override public function set data(value:Object):void {
_data = value;
if(_listData!=null){
var col:DataGridColumn=((_listData.owner as DataGrid).columns[_listData.columnIndex] as DataGridColumn);
removeAllChildren();
//取决于列,可以适当格式化