4

是否可以将渲染器用于高级数据网格中的树列并仍保留层次结构功能?如果我使用渲染器提供程序,我会丢失树下拉菜单的箭头。我想保留树功能并更改列的显示。(而不仅仅是文件夹图像)

<mx:AdvancedDataGridRendererProvider column="{titleCol}" depth="1"
        renderer="com.something.titleColumnRenderer"/>

标题列渲染器:

<mx:VBox width="100%" xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="titleLabel" textAlign="center" text="sometext" width="100"/></mx:VBox>
4

1 回答 1

10

这是我为实现此目的所做的:

  1. 创建一个扩展 AdvancedDataGridGroupItemRenderer 的类
  2. 在新类中覆盖 updateDisplayList 并做你需要做的事情
  3. 将新类分配给 AdvancedDataGrid 的 groupItemRenderer 属性

这是您的新课程的样子

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"/>

或者,在 ActionScript 中:

myAdvancedDataGrid.groupItemRenderer = new ClassFactory(com.whereever.CustomGroupRenderer);
于 2010-04-15T14:45:09.780 回答