如何创建自定义组件?

时间:2010-11-01 14:29:39

标签: flex actionscript-3

我想创建一个包含4列的数据网格:description, quantity, price, and line total。线总数将仅仅是数量和产品的乘积。价钱。我希望网格的最后一行是所有行总数的总和。

如何创建此类网格?我想过使用项目渲染器,但我无法弄清楚如何将最后一行用于行项目总计。

如果我必须创建自定义组件,我会欣赏有关自定义组件创建的书籍建议。虽然我对如何创建自定义组件有一般性的了解,但我并不像我想的那样牢牢抓住它。感谢。

2 个答案:

答案 0 :(得分:1)

虽然您一定要查看www.Flextras.com提供的链接,但有几种方法可以提供您所需要的功能:

最简单的是labelFunction:

<DataGrid dataProvider="{dp}">
     <columns>
         <DataGridColumn labelFunction="sumTotals" />
     </columns>
 </DataGrid>

 private function sumTotals(item:Object,column:DataGridColumn):String {
     return Number(item.quantity * item.price).toString();
 }

或者,您可以创建自己的itemRenderer,如下所示:

  <!-- MyItemRenderer.mxml -->
 <mx:Label>
     <mx:Script>
         override public function set data(value:Object):void {
             super.data = value;
              this.label = Number(item.quantity * item.price).toString();
         }
     </mx:Script>
 </mx:Label>


 <!-- Your component -->
 <DataGrid dataProvider="{dp}">
     <columns>
         <DataGridColumn itemRenderer="MyItemRenderer"/>
     </columns>
 </DataGrid>

答案 1 :(得分:0)

Flex DataGrid不能包含不在dataProvider中的项目,因此在不扩展DataGrid的情况下添加包含DataGrid中所有行项目总数的行是不切实际的。

有关创建自定义组件的信息,请查看this documentation。另请查看此screencast series。指向episode 1的直接链接。