Apache flex Flex中AdvancedDataGrid上TreeColumn的ItemRenderer
是否可以在advanceddatagrid中使用树柱的渲染器,并且仍然保留层次结构功能?如果使用渲染器提供程序,则会丢失树下拉列表的箭头。我想保留树功能并更改列的显示(而不仅仅是文件夹图像)Apache flex Flex中AdvancedDataGrid上TreeColumn的ItemRenderer,apache-flex,itemrenderer,advanceddatagrid,Apache Flex,Itemrenderer,Advanceddatagrid,是否可以在advanceddatagrid中使用树柱的渲染器,并且仍然保留层次结构功能?如果使用渲染器提供程序,则会丢失树下拉列表的箭头。我想保留树功能并更改列的显示(而不仅仅是文件夹图像) 标题列渲染器: <mx:VBox width="100%" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Label id="titleLabel" textAlign="center" text="sometext" width="10
标题列渲染器:
<mx:VBox width="100%" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="titleLabel" textAlign="center" text="sometext" width="100"/></mx:VBox>
以下是我为实现这一目标所做的:
public class CustomGroupRenderer extends AdvancedDataGridGroupItemRenderer
{
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var listData:AdvancedDataGridListData = listData as AdvancedDataGridListData;
var advancedDataGrid:AdvancedDataGridDataGrid = listData.owner as AdvancedDataGrid;
var cellBackgroundColor:uint = 0xFF0000;
var g:Graphics = graphics;
g.clear();
if (!advancedDataGrid.isItemSelected(data) && !advancedDataGrid.isItemHighlighted(data))
{
g.beginFill(cellBackgroundColor);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
}
}
}
然后将此类分配给AdvancedDataGrid的groupItemRenderer属性:
<mx:AdvancedDataGrid groupItemRenderer="com.whereever.CustomGroupRenderer"/>
这是接近我需要的,但我不只是试图改变颜色。我想向其中添加一个VBox,并在VBox中放置一些项目。我尝试了这个和super.addChild,但是应用程序冻结了。有什么想法吗?我认为您必须结合使用生命周期方法createChildren(创建vbox和vbox子对象)、measure(根据子对象计算渲染器的宽度和高度)和updateDisplayList(定位渲染器内的所有内容,如文件夹图标、文件夹标签和vbox)。此线程可能会有所帮助:-这里有一个指向一些示例代码的链接,可能会对您有所帮助。
<mx:AdvancedDataGrid groupItemRenderer="com.whereever.CustomGroupRenderer"/>
myAdvancedDataGrid.groupItemRenderer = new ClassFactory(com.whereever.CustomGroupRenderer);