`
hjy2099
  • 浏览: 256427 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Flex Collapsible DataGrid

    博客分类:
  • Flex
阅读更多

Flex 3 AdvancedDataGrid 具有 Tree 與 跨欄 (columnSpan) 的功能
以下利用這兩種特性做出可收合的 DataGrid

MyDataGridGroupItemRenderer Class:

package com.ticore.uicomponents {
 import mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer;

 public class MyDataGridGroupItemRenderer extends AdvancedDataGridGroupItemRenderer {
   
  public function MyDataGridGroupItemRenderer() {
   super();
  }
  override protected function updateDisplayList(
     unscaledWidth:Number, unscaledHeight:Number):void {
   
   super.updateDisplayList(unscaledWidth, unscaledHeight);
   
   this.graphics.clear();
   this.graphics.lineStyle(1, 0x808080, 1, true);
   this.graphics.drawRect(-1, -1, unscaledWidth + 1, unscaledHeight);
  }
  
 }
}

 

 Flex MXML Code:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#E0E0E0">
 <mx:Script>
  <![CDATA[
   import mx.controls.advancedDataGridClasses.*;
   import mx.collections.ArrayCollection;
            
   [Bindable]
   private var dpHierarchy:ArrayCollection = new ArrayCollection([
    {Region:"Arizona", children: [
     {Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
     {Territory_Rep:"Dana Binn", Actual:29885, Estimate:30000}]},
    {Region:"Central California", children: [
     {Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}]},
    {Region:"Nevada", children: [
     {Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}]},
    {Region:"Northern California", children: [
     {Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
     {Territory_Rep:"T.R. Smith", Actual:55498, Estimate:40000}]},
    {Region:"Southern California", children: [
     {Territory_Rep:"Alice Treu", Actual:44985, Estimate:45000},
     {Territory_Rep:"Jane Grove", Actual:44913, Estimate:45000}]}
    ]);
   
   public function groupLabelFunction(item:Object, column:AdvancedDataGridColumn):String{
    if (item && item.children) {
     return item[column.dataField] + " (" + item.children.length + ")";
    } else {
     return item[column.dataField];
    }
   }
  ]]>
 </mx:Script>

 <mx:AdvancedDataGrid id="myADG" width="100%" height="100%"
    rowHeight="24" headerHeight="24" fontSize="12" displayItemsExpanded="true"
    paddingTop="0" paddingBottom="0" paddingLeft="0" paddingRight="0"
    folderClosedIcon="{null}" folderOpenIcon="{null}" defaultLeafIcon="{null}" >
  <mx:dataProvider>
      <mx:HierarchicalData source="{dpHierarchy}" />
  </mx:dataProvider>
  <mx:rendererProviders>
      <mx:AdvancedDataGridRendererProvider columnIndex="0" columnSpan="4" dataField="Region"
     renderer="com.ticore.uicomponents.MyDataGridGroupItemRenderer" />
      <mx:AdvancedDataGridRendererProvider dataField="Territory_Rep"
     renderer="mx.controls.advancedDataGridClasses.AdvancedDataGridGroupItemRenderer" />
     </mx:rendererProviders>
  <mx:groupedColumns>
   <mx:AdvancedDataGridColumn id="col1" dataField="Region" width="20"
      labelFunction="groupLabelFunction" />
   <mx:AdvancedDataGridColumn id="col2" dataField="Territory_Rep"/>
   <mx:AdvancedDataGridColumn dataField="Actual"/>
   <mx:AdvancedDataGridColumn dataField="Estimate"/>
  </mx:groupedColumns>
 </mx:AdvancedDataGrid>
</mx:Application>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics