我正在尝试为spark DataGrid
中的所有列使用相同的自定义渲染器。我需要知道dataField
或columnIndex
,我可以在自定义的itemrenderer中更改state
。
在mx:DataGrid的早期,这可以通过扩展实现MXDataGridItemRenderer
的{{1}}来实现,因此IDropInListItemRenderer
属性可用。
但是使用spark DataGrid,我正在扩展dataGridListData
,它不会实现GridItemRenderer
,因此无法访问IDropInListItemRenderer
属性。我试图编写一个扩展dataGridListData
并实现GridItemRenderer
的动作脚本类,但flex会在此变量的dataGridListData
函数中抛出错误。
有人可以帮助我完成这个吗?
//示例itemRenderer用于set
[工作代码]
mx:DataGrid
//示例spark DataGrid itemRenderer [NOT Working]
打包customComponents.myOrgChart { import mx.controls.dataGridClasses.DataGridListData; import mx.controls.listClasses.BaseListData; import mx.controls.listClasses.IDropInListItemRenderer; import mx.controls.listClasses.IListItemRenderer;
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import scripts.valueObjects.CellRendererVO;
private var _cellRenderer:CellRendererVO = new CellRendererVO();
[Bindable]
private var _lineColor:uint = 0xFF0000;
[Bindable]
private var _lineWidth:int = 5;
override public function set data(value:Object):void
{
//able to access the dataGridListData.dataField variable
_cellRenderer = (value[dataGridListData.dataField] as CellRendererVO);
currentState = _cellRenderer.stateName;
}
private function connectingLinesState_enterStateHandler(event:FlexEvent):void
{
}
protected function orgChartNodeState_enterStateHandler(event:FlexEvent):void
{
}
]]>
</fx:Script>
<s:states>
<s:State name="emptyState" />
<s:State name="orgChartNodeState" enterState="orgChartNodeState_enterStateHandler(event)"/>
<s:State name="connectingLinesState" enterState="connectingLinesState_enterStateHandler(event)"/>
</s:states>
<s:HGroup width="100%" height="100%" includeIn="orgChartNodeState"
horizontalAlign="center" verticalAlign="middle">
</s:HGroup>
<s:HGroup width="100%" height="100%" includeIn="connectingLinesState"
gap="0" horizontalAlign="center" verticalAlign="middle"
paddingLeft="0" paddingRight="0" paddingTop="0"
paddingBottom="0">
</s:HGroup>
}
谢谢,
安
答案 0 :(得分:3)
Spark GridItemRenderer仍然具有data
属性,就像任何其他ItemRenderer一样,所以你很好。
除此之外,您需要的是column属性,它返回GridColumn个实例。这与您在创建DataGrid时在mxml中定义的实例相同,因此它具有其所有属性。您最常用的是dataField和columnIndex。
例如:
var value:* = data[column.dataField];
var index:int = data[column.columnIndex];