【发布时间】:2012-08-09 08:23:18
【问题描述】:
我需要以编程方式为我的 spark 数据网格设置 headerRenderer,因为我需要为其分配一些属性(开始和结束时间)。此数据是从数据库中获取的,需要在加载后分配给此 headerrenderer。
虽然以编程方式设置我的 itemRenderer 没有问题,但我发现无法为 headerRenderer 做同样的事情。
这是一段简化的代码:
主要
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
protected function button1_clickHandler(event:MouseEvent):void
{
customHeaderColumn.headerRenderer = new ClassFactory(myHeaderRenderer);
customHeaderColumn.itemRenderer = new ClassFactory(myItemRenderer);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout />
</s:layout>
<s:DataGrid width="100%">
<s:dataProvider>
<s:ArrayList>
<fx:Object name="record"/>
</s:ArrayList>
</s:dataProvider>
<s:columns>
<s:ArrayList>
<s:GridColumn id="customHeaderColumn" headerText="Column 1"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
<s:Button label="change" click="button1_clickHandler(event)"/>
</s:Application>
我的项目渲染器
<?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>
myHeaderRenderer
<?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 保持不变。
【问题讨论】:
-
闻起来像虫子。如果你只想设置一些属性,你可以创建内联的头部渲染器(就像你对
dataProvider和columns属性所做的那样)并绑定属性。 -
@RIAstar 这似乎有效!没有解决问题,但解决了我的问题,谢谢!
标签: apache-flex dynamic datagrid renderer flex-spark