Flex AdvancedDataGrid添加汇总行处理
来源:互联网 发布:什么叫网络文学作品 编辑:程序博客网 时间:2024/06/05 16:04
表格行汇总是一个很普遍的业务需求,比如编辑单元格数据时,用户往往想知道,该列的总和是多少?这就需要给表格添加汇总行。Flex本身自带的Datagrid或者AdvancedDataGrid都没有此功能,但是我们只要稍作处理便可实现简单的表格行汇总,思路如下(假设表格的dataprovoider都是ArrayCollection):
1)datagrid填充完数据时,给ArrayCollection插入一条记录,该记录用于存放每列的汇总信息;
2)datagrid单元格编辑的时候,处理ItemEditEnd事件,在该事件中队每列进行重新汇总;
该思路有个缺点,那就是表格新增记录时要确保汇总行是ArrayCollection的最后一条记录,执行新增或者删除行记录时都需要手工进行汇总处理。下述为具体的实现方法:
1)ItemEditEnd事件处理及汇总处理代码,sum_fields为要汇总的列
public static function getGridColSumByEvent(event:Event,ds_list:ArrayCollection,sum_fields:Array):void{
//if edited column is not sum column then return
if( sum_fields.indexOf(event["dataField"]) < 0 ){
return;
}
if( ds_list.length <= 1 )
return;
var inputData:Object= event.currentTarget.itemEditorInstance.text;
var itemadd:Object = ds_list[ds_list.length-1];
for( var k:int=0;k<sum_fields.length;k++ ){
var field:String = sum_fields[k].toString();
var sum_num:Number = 0;
for( var i:int=0;i<ds_list.length-1;i++ ){
var item:Object = ds_list[i];
var num:Number = Number(item[field]);
if( i == event["rowIndex"] && field == event["dataField"] ){
num = Number(inputData);
}
sum_num = Number(sum_num + num);
}
itemadd[field] = sum_num;
}
ds_list.setItemAt(itemadd,ds_list.length-1);
return;
}
//
public static function getGridColSum(ds_list:ArrayCollection,sum_fields:Array):void{
if( ds_list.length <= 1 )
return;
var itemadd:Object = ds_list[ds_list.length-1];
for( var k:int=0;k<sum_fields.length;k++ ){
var field:String = sum_fields[k].toString();
var sum_num:Number = 0;
for( var i:int=0;i<ds_list.length-1;i++ ){
var item:Object = ds_list[i];
var num:Number = Number(item[field]);
sum_num = Number(sum_num + num);
}
itemadd[field] = sum_num;
}
ds_list.setItemAt(itemadd,ds_list.length-1);
return;
}
2)假设表格填充数据为ArrayCollection,dp_data则只要做如下处理,即可在表格填充数据时即进行汇总。
假设表格id为adg1, adg1.dataProvider为dp_data,dp_data中的对象结构为{f1:列1, s1:汇总列1, s2:汇总列2};
adg1.dataProvider = responder.lastResult;
//加入汇总行
//先加一个空行
var newrow:PlanMonthPutInVOEX = new PlanMonthPutInVOEX();
newrow["f1"] = "合计";
adg1.dataProvider.addItem(newrow);
var field:Array = new Array("s1","s2"); //汇总列字段
getGridColSum (adg1.dataProvider as ArrayCollection,field);
3)adg1表格添加 itemEditEnd事件处理
protected function itemEditEndHandle(event:AdvancedDataGridEvent):void{
var field:Array = new Array("s1","s2"); //汇总列字段
getGridColSumByEvent(event,adg1.dataProvider as ArrayCollection,
field);
}
- Flex AdvancedDataGrid添加汇总行处理
- Flex advanceddatagrid 验证处理
- Flex ms:AdvancedDataGrid汇总统计方法
- Flex AdvancedDataGrid动态添加列并绑定数据库返回数据
- flex AdvancedDataGrid的使用
- Flex AdvancedDataGrid表格过滤
- Flex AdvancedDataGrid表头合并
- flex advanceddatagrid 分组统计
- flex, advanceddatagrid width问题
- flex AdvancedDataGrid表格联动
- flex AdvancedDataGrid使用心得
- Flex之AdvancedDataGrid用法
- Flex AdvancedDataGrid 单元格格式
- flex AdvancedDataGrid去水印
- Flex 字符串处理汇总
- flex AdvancedDataGrid 某行指定值变颜色
- flex的分层数据AdvancedDataGrid
- flex advancedDatagrid 自动生成序号
- vc学习,Invalidate(true),Invalidate(false)
- C++ 中stdafx.h
- CreatePen
- C++中的异常规范
- 二极管7种应用电路详解之二
- Flex AdvancedDataGrid添加汇总行处理
- linux top命令结果说明
- OProfile on Ubuntu 10.10 (OCT. 13, 2010)
- 二极管7种应用电路详解之三
- class的sizeof
- 软件架构的评价准则
- 决定换个ID在CSDN中与时俱进
- 二极管7种应用电路详解之四
- 什么是综合布线系统?