Flex Hack 02:DataGrid列尾,用于数据汇总

Excel的表格中会在在一组数据的后面有一行数据来显示这个表格的某一列的平均数,最 大值,最小值等,在Flex中做些小动作也能做出类似效果。

其实Alex Harui早已经为我们做了要求,我们先看运行效果:

其实原理很简单就是在重写DataGrid在列尾添加一个UIComponent即取名为: DataGridFooter,让它去展现平均数,最大值等,在这里最重要的是重写DataGridColumn, 在这个类中我们添加一个footerColumn:DataGridColumn,让这个 footerColumn的 labelFunction计算出对应的平均数,最大值等处理(关于labelFunction的使用请看这里: Flex Hack 01:labelFunction的使用),代码如下:

import mx.controls.dataGridClasses.DataGridColumn;
     [DefaultProperty("footerColumn")]
     public class FooterDataGridColumn extends DataGridColumn
     {
          public function FooterDataGridColumn()
          {
           super();
          }
          /**//**
          * 用这个对应的labelFunction计算出这一列的最大值或最小值等等
          * **/
          public var footerColumn:DataGridColumn;
     }

然后就是重写DataGrid,用于显示列尾 ,如重写createChildren方法:

override protected function createChildren():void
         {
             super.createChildren();
             if (!footer)
             {
                 footer = new DataGridFooter();
                 footer.styleName = this;
                 addChild(footer);
             }
         }

再就重写adjustListContent方法以确定footer的位置:

override protected function adjustListContent(unscaledWidth:Number =  -1,
                                             unscaledHeight:Number = -1):void
         {
           super.adjustListContent(unscaledWidth,  unscaledHeight);
           listContent.setActualSize(listContent.width,  listContent.height - footerHeight);
           footer.setActualSize(listContent.width,  footerHeight);
           footer.move(listContent.x, listContent.y +  listContent.height + 1);
          }

同时当有一些属性更改或拖动来更新footer的位置等等,那么我们还有重写一个方法:

override public function invalidateDisplayList():void
          {
               super.invalidateDisplayList();
               if (footer)
                    footer.invalidateDisplayList();
          }

还有一个类DataGridFooter,这个就是我们的主角,用于显示列尾的数据,关于这个类没 什么特别的,就是计算他们的位置显示等等,有兴趣的朋友可以在下面的资料中下载代码看 看。

http://blogs.adobe.com/aharui/DataGridFooter3/dg.swf

时间: 2024-12-30 09:13:41

Flex Hack 02:DataGrid列尾,用于数据汇总的相关文章

批量获取DataGrid控件模板列中的数据

datagrid|datagrid控件|模板|数据 批量获取DataGrid控件模板列中的数据 在DataGrid中一般只能单个获取每一行的数据,若要批量获取DataGrid控件中的数据必须对每一个模板列的控件进行扫描,获取其中的数据.我本想做的程序是根据不同的行数,由用户一次输入若干数据,提交后系统自动获取批量数据的程序.以下程序简单表达了需要实现的功能 test.aspx .......... <asp:DataGrid id="dgResult" runat="s

拖放 DataGrid 列--来自MSDN

datagrid 摘要:了解如何利用基本的 GDI 功能,从而通过 DataGrid 控件获得可视化效果.通过跨越托管边界进行调用,可以利用本机 GDI 功能来执行屏幕捕获,并最终获得拖放体验. 下载 ColumnDragDataGrid.msi 文件. 本页内容 简介 入门 ScreenImage 类 DraggedDataGridColumn 类 ColumnDragDataGrid 类 列跟踪 重写 DataGrid 的 OnPaint 方法 小结 简介几个月以前,当我初到 Microso

xcode-获取表中列的全部数据

问题描述 获取表中列的全部数据 代码我想要获取所有引用数据,一共有320个引用.但是只得到了第一个引用. -(NSMutableArray *)getAllQuotesData { NSMutableArray *quotesArray = [[NSMutableArray alloc] init]; NSString *sqlStr = [NSString stringWithFormat:@"SELECT quote FROM quotes"]; sqlite3_stmt *Ret

AJAX Hacks之Hack 4. 接收XML格式的数据

ajax|xml|数据 AJAX Hacks之Hack 4. 接收XML格式的数据 当前的许多交换数据的技术都使用XML格式的数据,那是因为XML格式的数据被广泛的使用和支持.因此,不同用户可以已有的技术来生成.发送.接收XML数据而不需要使用别的工具转换数据的格式. 一个典型的例子就是一个GPS设备可以在任何地方共享它需要的数据.无论是在远行.或是户外活动,当把设备插入到计算机的UBS接口后,就可以向web发送数据了.GPS软件被设置为默认支持XML格式的数据.而web也使用xml格式的数据.

在datagrid列中添加下拉列表

datagrid|下拉|下拉列表 private void AddGrdComBox()//在datagrid列中添加下拉列表 { DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)grd_please.TableStyles[0].GridColumnStyles[8]; //8是列的序号 ComboBox cmbFunctionArea = new ComboBox(); cmbFunctionArea.Items.AddRange(ne

Oracle中用于数据备份的触发器及表结构

运行本文的示例前,请对当前的数据表的插入.删除.更新等进行记录,并把操作日期.操作者.原来数据.现在数据都作为备份,以便在当前备出现问题的时候能够给以恢复. 注释:最好把备份表放在不同的磁盘上或不同的数据库中: 1.建立用于数据备份及操作记录的表: CREATE TABLE AUD_PRGAMD1( W_ROWID VARCHAR2(50), --行ID W_ACTION VARCHAR2(1), --操作 DTTM DATE, --操作日期 OPUSER VARCHAR2(30), --操作者

派生列-ssis 中转换问题,在表中加列并填充数据

问题描述 ssis 中转换问题,在表中加列并填充数据 初学SSIS 我在数据流中,为数据源加了两个派生列,一个是时间戳,这个没问题,另一个列我想用另外一张表的某条记录的值来填充,要怎样实现?是不是不能用派生列? 应该用哪种转换方式?

用于数据连接的最新的msado15.dll在那可以找到?

问题描述 用于数据连接的最新的msado15.dll在那可以找到? VB与ACCESS,用于数据连接的最新的msado15.dll在那可以找到? 解决方案 windows 2000以上系统自带,或者在mdac安装包里

文件读写-用C++怎样按列写入数据呢,实现每一列可能写入数据的个数不相同(把右下角的数据从该列开头写)

问题描述 用C++怎样按列写入数据呢,实现每一列可能写入数据的个数不相同(把右下角的数据从该列开头写) 解决方案 从列开头写,那么就是把这些数据写到第一行对应列的位置. 解决方案二: 你这个是直接操作excel表么? 1. 之前用过java,有相关的库,直接操作excel表 2. 如果你只是想写成一个文本文件,然后利用excel,把该文本文件变成电子表格 比如,以逗号","作为每一行中,各列的分隔符 1.你需要在程序里面,将上副图的数据,存在二维矩阵里面,然后无数据的,你可以用空格代替