Apache flex Flex:无法以编程方式设置headerRenderer

Apache flex Flex:无法以编程方式设置headerRenderer,apache-flex,dynamic,datagrid,renderer,flex-spark,Apache Flex,Dynamic,Datagrid,Renderer,Flex Spark,我需要以编程方式为spark datagrid设置headerRenderer,因为我需要为它分配一些属性(开始和结束时间)。此数据从数据库中获取,加载后需要分配给此headerrenderer 虽然以编程方式设置itemRenderer没有问题,但对于headerRenderer,我找不到同样的方法 下面是一段简化的代码: 主要 myItemRenderer <?xml version="1.0" encoding="utf-8"?> <s:GridItemRendere

我需要以编程方式为spark datagrid设置headerRenderer,因为我需要为它分配一些属性(开始和结束时间)。此数据从数据库中获取,加载后需要分配给此headerrenderer

虽然以编程方式设置itemRenderer没有问题,但对于headerRenderer,我找不到同样的方法

下面是一段简化的代码:

主要


myItemRenderer

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
    <s:Label top="9" left="7" text="item"/>
</s:GridItemRenderer>

桃金娘

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
    <s:Label top="9" left="7" text="header"/>
</s:GridItemRenderer>


单击按钮时,您可以看到itemRenderer正在更改,但headerRenderer保持不变。

看起来您可以通过执行以下命令来强制执行它:

myDataGrid.columnHeaderGroup.layout.clearVirtualLayoutCache();
我已从DataGrid.as set columns方法复制了此行:

public function set columns(value:IList):void
{
    if (setGridProperty("columns", value))
    {
        if (columnHeaderGroup)
        {
            columnHeaderGroup.layout.clearVirtualLayoutCache();
            columnHeaderGroup.invalidateSize();
            columnHeaderGroup.invalidateDisplayList();
        }

        dispatchChangeEvent("columnsChanged");
    }
}

闻起来像虫子。如果您只想设置一些属性,可以内联创建标题渲染器(就像您对
数据提供程序
属性所做的那样)并绑定属性。@RIAstar这似乎可行!不是解决问题,而是解决我的问题,谢谢!
public function set columns(value:IList):void
{
    if (setGridProperty("columns", value))
    {
        if (columnHeaderGroup)
        {
            columnHeaderGroup.layout.clearVirtualLayoutCache();
            columnHeaderGroup.invalidateSize();
            columnHeaderGroup.invalidateDisplayList();
        }

        dispatchChangeEvent("columnsChanged");
    }
}