如何更改Flex DataGrid中单个单元格的样式?

问题描述:

我有一个Flex DataGrid,其中一个单独的单元格需要以与其他单元格不同的方式呈现。具体来说,对于网格的一行,应该隐藏它的一个单元格。如何更改Flex DataGrid中单个单元格的样式?

的DataGridColumn载像这样在我的.mxml文件:

<mx:DataGridColumn editable="false" dataField="interactive" headerText="Select?" width="45"> 
     <mx:itemRenderer> 
      <mx:Component> 
       <mx:CheckBox selectedField="isInteractive" 
          click="data.isInteractive=!data.isInteractive; this.parent.parent.dispatchEvent(new Event('interactive_changed'));" 
          paddingLeft="5"/> 
      </mx:Component> 
     </mx:itemRenderer> 
    </mx:DataGridColumn> 

我最初的想法是,添加的条件MX:复选框这样的:

<mx:CheckBox visible="{!data.isBackground}" ... 

但没有按” t工作 - 事实上,它以相当有趣的方式混淆了显示器(行中的其他单元格之一获得额外的复选框...去图)。

我怀疑这可能是通过使用自定义的ItemRenderer类,但这似乎是一个相当简单的情况下很多代码开销。有什么想法吗?

(我使用Flex 3.5,如果是相关的。)

+0

“但这不起作用”为什么不呢?你有运行时错误吗?还是编译时错误?或者是其他东西? – JeffryHouser 2011-06-13 13:33:31

+0

没有运行时错误,没有编译时错误,只是奇怪的行为:额外的复选框显示在左侧的网格单元格顶部。 – 2011-06-13 14:16:38

在Flex 3.5,你需要一个定制的itemRenderer。

我这样做的方式是我会有两个状态。正常和“复选框”,然后当您覆盖itemRenderer中的数据设置器时,相应地更改您的状态。

在Flex 4+中,Spark DataGrid上有一个“itemRendererFunction”属性,您可以通过编程方式选择itemRenderer,这非常酷。

+0

谢谢!建议我在不久的将来将项目移至Flex 4之前解决它并不值得。 – 2011-06-13 14:48:33