Flex DataGrid列求和

附件是flex3 datagrid列求和的例子子,需要注意的是在FooterDataGrid中不能添加itemRenderer属性,并且labelFunction方法的参数是DataGridColumn,而不是之前Object和DataGridColumn。
下面的方法是末行的labelFunction对应的函数,参数只有一个,目的是求变更时间大于截止时间的总天数。

private function overTotalDays(column:DataGridColumn):String
{
var overTotalNum:Number = 0;

    for(var i:int = 0; i < control.ctlChangeInfos.length; i++)
    {
             var date01:Date = control.ctlChangeInfos[i].changeDate as Date;
             var date02:Date = control.ctlChangeInfos[i].lastDate as Date;
        //如果变更时间大于截止时间,则变更超期
            if(date01 > date02)
            {
            overTotalNum += (date01.valueOf() - date02.valueOf())/24/60/60/1000;
            }
    }
    return overTotalNum.toString();
}

需要特别注意的是,在最末的合计行,显示的时候往往会出现意外覆盖或显示不全的问题,经过多次测试和修改发现,原来是datagrid的height问题所引起,需要保证height刚好能够容纳若干行的数据,或稍微多一点,如果height刚好显示20.5行数据,那么就会有半行数据重叠。在此基础上再将paddingTop和paddingBottom边框设为0就更好了。

如果需要通过点击按钮触发事件的话,需要用datagridcolumn的id.labelFunction=myFunction来触发labelFunction事件

你可能感兴趣的:(datagrid)