`

Flex3 DataGrid拖拽到ClumnChart动态显示图表

阅读更多


支持多行同时拖拽,重复数据不重得添加,添加了图表右键菜单.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
    
<![CDATA[
        import mx.controls.Alert;
        import mx.controls.DataGrid;
        import mx.managers.DragManager;
        import mx.core.UIComponent;
        import mx.collections.ArrayCollection;
        import mx.events.DragEvent;
        
        //DataGrid的数据源
     [Bindable]
     private var medalsAC:ArrayCollection = new ArrayCollection( [
         { Country: "美国", Gold: 35, Silver:39, Bronze: 29 },
         { Country: "中国", Gold: 99, Silver:17, Bronze: 14 },
         { Country: "日本", Gold: 32, Silver:27, Bronze: 38 },
         { Country: "韩国", Gold: 27, Silver:27, Bronze: 2 },
         { Country: "新加坡", Gold: 55, Silver:27, Bronze: 63 },
         { Country: "朝鲜", Gold: 11, Silver:21, Bronze: 16 },
         { Country: "马来西亚", Gold: 7, Silver:14, Bronze: 77 },
          { Country: "澳洲", Gold: 0, Silver:12, Bronze: 11 } 
          ]);
      
     //ColumnChart的数据源, 默认为空  
     [Bindable]
     private var chartData:ArrayCollection = new ArrayCollection();
       [Bindable]
       private var menu:ContextMenu = new ContextMenu();    
      //让columnChart监听拖拽事件 
     private function init():void{
         column.addEventListener(DragEvent.DRAG_ENTER,dragEnterHandle);
         column.addEventListener(DragEvent.DRAG_DROP,dragdropHandle);
         //初始化右键菜单
         initMenu();
     }
      //初始化chart右键菜单
      private function initMenu():void    
      {
          var clear:ContextMenuItem = new ContextMenuItem("清空图表"); 
          menu.customItems.push(clear);
          clear.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,clearAction);
      }    
      //处理鼠标右键事件
      private function clearAction(event:ContextMenuEvent):void
      {
          this.chartData.removeAll();
      }
      
     //因为只有DataGrid推拽,所以直接允许,如果界面上有多个控件监听拖拽事件,需要判断后允许正确的数据进入
     private function dragEnterHandle(e:DragEvent):void{
         DragManager.acceptDragDrop(e.currentTarget as UIComponent)
     }
  
     //拖拽放开后处理
     private function dragdropHandle(e:DragEvent):void{
         //往column chart的dataprovider中添加拖拽数据。
         //如果只需要特定的数据进入column chart,可以先做数据筛选。
         var datas: Array =  (e.dragInitiator as DataGrid).selectedItems;
         for(var i:int = 0; i < datas.length; i ++)
         {
             //不包含已经存在的数据再添加
             if(!chartData.contains(datas[i]))
             {
                 chartData.addItem(datas[i]);
             }
         }
         
     }
        
    
]]>
</mx:Script>

    
<mx:DataGrid dragEnabled="true" dataProvider="{medalsAC}"  x="192" y="52" allowMultipleSelection="true">
        
<mx:columns>
            
<mx:DataGridColumn dataField="Country" headerText="国家"  />
            
<mx:DataGridColumn dataField="Gold" headerText="金牌"/>
            
<mx:DataGridColumn dataField="Silver" headerText="银牌"/>
            
<mx:DataGridColumn dataField="Bronze" headerText="铜牌"/>
        
</mx:columns>
    
</mx:DataGrid>
    
     
<!-- 定义颜色 -->
    
<mx:SolidColor id="sc1" color="yellow" alpha=".8"/>
    
<mx:SolidColor id="sc2" color="0xCCCCCC" alpha=".6"/>
    
<mx:SolidColor id="sc3" color="0xFFCC66" alpha=".6"/>
    
    
<!-- 定义颜色 -->
    
<mx:Stroke id="s1" color="yellow" weight="2"/>
    
<mx:Stroke id="s2" color="0xCCCCCC" weight="2"/>
    
<mx:Stroke id="s3" color="0xFFCC66" weight="2"/>
    
    
<!--Column chart设置成能解析Country: "Russia", Gold: 27, Silver:27, Bronze: 38这样的数据项-->
    
<mx:ColumnChart id="column" contextMenu="{menu}"
            height
="202" 
            width
="402" 
            paddingLeft
="5" 
            paddingRight
="5" 
            showDataTips
="true" 
            dataProvider
="{chartData}"
         x
="192" y="215">     
              
              
<!--设置水平轴-->
            
<mx:horizontalAxis>
            
<!--水平轴拖动数据到chart后的文字显示-->
                
<mx:CategoryAxis categoryField="Country" />
            
</mx:horizontalAxis>
            
<!--设置柱子-->
            
<!--fill填充颜色,stroke边框颜色-->
            
<mx:series>
                
<mx:ColumnSeries 
                    
xField="Country" 
                    yField
="Gold" 
                    displayName
="金牌"
                    fill
="{sc1}"  
                    stroke
="{s1}" 
                
/>
                
<mx:ColumnSeries 
                    
xField="Country" 
                    yField
="Silver" 
                    displayName
="银牌"
                    fill
="{sc2}"
                    stroke
="{s2}"
                
/>
                
<mx:ColumnSeries 
                    
xField="Country" 
                    yField
="Bronze" 
                    displayName
="铜牌"
                    fill
="{sc3}"
                    stroke
="{s3}"
                
/>
            
</mx:series>
        
</mx:ColumnChart>

</mx:Application>


源码下载

々上善若水々 2009-04-22 10:46 发表评论
分享到:
评论

相关推荐

    Flex3 DataGrid拖拽到ClumnChart动态显示图表实现代码

    在Flex3中,实现DataGrid与ColumnChart之间的交互功能,如拖拽数据显示图表,是一项常见的需求。这个功能允许用户通过拖拽DataGrid中的数据项,动态地在ColumnChart上创建或更新图表,从而提供更直观的数据可视化...

    flex中dataGrid导出数据到excel中

    flex中dataGrid导出数据到excel中,不存在乱码问题

    FLEX的datagrid合计、平均值

    3. **动态计算**: - 如果数据在运行时变化,可能需要监听数据提供者的`collectionChange`事件,并在事件触发时重新计算总计和平均值。 - 为了提高性能,可以考虑仅在数据真正改变时才更新显示,而不是每次事件...

    flex 自定义 datagrid 列头带组合框进行过滤

    这个主题——"flex 自定义 datagrid 列头带组合框进行过滤",涉及到的关键知识点包括Flex组件定制、DataGrid列头的扩展以及ComboBox控件的使用。 1. Flex组件定制: 在Flex中,我们可以使用MXML和ActionScript来...

    Flex4 DataGrid控件行编辑项目

    在Flex4.6开发环境中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页和自定义列显示。在这个项目中,我们关注的是如何实现DataGrid的行编辑功能,特别是在行中嵌套ComboBox控件以...

    flex spark DataGrid 拖动删除

    在Flex开发中,Spark DataGrid是一个常用的组件,用于展示数据表格。然而,当涉及到自定义交互,如拖动删除功能时,开发者可能会遇到问题,因为MX组件与Spark组件的实现方式有所不同。MX DataGrid和Spark DataGrid在...

    flex 把datagrid的内容导出到Excel

    总的来说,通过使用As3Xls库,Flex开发者可以方便地将Datagrid中的数据导出到Excel文件,满足用户的多种需求。虽然这个过程涉及到一些编码工作,但有了这个工具,你可以在不依赖服务器端的情况下实现客户端直接导出...

    在flex的dataGrid控件中显示图片的实践

    在Flex开发中,DataGrid控件是用于展示结构化数据的常用组件,它可以灵活地显示表格形式的数据。本文将深入探讨如何在DataGrid中显示图片,特别是在与Spring、Hibernate和Struts等框架集成的背景下,如何处理二进制...

    将Flex DataGrid数据导出到Excel中

    本教程将详细介绍如何实现从Flex DataGrid导出数据到Excel的功能。 首先,让我们了解Flex DataGrid。它是一个强大的组件,用于显示二维数据集,通常包含可排序和可分页的列。DataGrid可以绑定到各种数据源,包括...

    flex动态生成datagrid表头

    3. **设置列数据**:通过遍历数据源,动态创建并添加DataGridColumn到DataGrid: ```actionscript for each (var column:Object in columns) { var dataGridColumn:DataGridColumn = new DataGridColumn(); ...

    Flex4 DataGrid表格操作

    Flex4 DataGrid表格操作,表格回车事件默认是换行,这里修改为换单元格,单元格轮完换行。支持上下左右和回车键控制光标位置,还添加了"+","-"按钮,用于控制添加行和删除选中的行。

    Flex的DataGrid中使用CheckBox

    Flex的DataGrid中使用CheckBox. 大家共同研究

    flex下拉dataGrid

    3. **布局管理**:处理好两个组件的相对位置和大小,确保下拉时DataGrid能正确显示。 4. **关闭处理**:当用户在DataGrid中做出选择后,需要更新ComboBox的选中项,并关闭下拉部分。 5. **样式定制**:可以根据需要...

    flex 自定义dataGrid渲染器.根据数据变色

    在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的常用组件。它允许用户以表格形式查看和操作数据。然而,有时我们可能需要根据数据的特定值来改变DataGrid中单元格的样式,例如颜色。这就涉及到了...

    flex DataGrid 表头分组

    3. **配置`AdvancedDataGrid`组件**:Flex中的`AdvancedDataGrid`相对于基础的`DataGrid`提供了更丰富的功能,包括表头分组。在`AdvancedDataGrid`中,我们需要设置`&lt;mx:columns&gt;`子元素来定义列,并为需要分组的列...

    flex datagrid 前台 分页

    3. **用户界面**:创建分页控件,如页码选择器和记录数显示,通过事件监听来响应用户操作,更新DataGrid的数据。 4. **数据排序和过滤**:如果需要在前台进行数据排序或过滤,要确保这些操作不会影响到整个数据集,...

    WPF DataGrid 行拖拽

    在Windows Presentation Foundation (WPF)框架中,DataGrid控件是一种强大的数据展示工具,它允许用户以表格形式显示和操作数据。默认情况下,WPF DataGrid的列支持拖放功能,用户可以方便地调整列的位置。然而,...

    Flex FooterSpark DataGrid 表格制作

    Flex FooterSpark DataGrid 是Adobe Flex框架中用于创建高级数据展示组件的一个重要工具,它在桌面和Web应用中广泛用于数据网格的展示。Flex是基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。...

    Flex 自定义Datagrid的ItemRender

    在Flex开发中,数据网格(Datagrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。然而,Datagrid的默认渲染器可能无法满足所有复杂的需求,这时我们就需要自定义ItemRender来扩展其功能。...

Global site tag (gtag.js) - Google Analytics