Apache flex Flex:无法以编程方式设置headerRenderer
我需要以编程方式为spark datagrid设置headerRenderer,因为我需要为它分配一些属性(开始和结束时间)。此数据从数据库中获取,加载后需要分配给此headerrenderer 虽然以编程方式设置itemRenderer没有问题,但对于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
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");
}
}