SMART datagrid v.1 > Examples

Back  Forward

Row Summary  Example

为了显示以行为单位的合计值,我们需要使用计算列衍生字段。 下列两个"Sum"列中,第一个是连接在衍生字段的列,而第二个则是计算列。 虽然这两个例题中所显示的是相同的结果,但计算列和衍生字段的使用目的有可能会不一样。 最重要的是,如下列网格中所示,计算列的页脚无法显示合计。 这是因为它不会单独储存包含在计算列的单元格的值,而只是在显示时,会被临时计算。 

Grid - 1
rows
Code -1
    // 设置衍生字段。
    ds.setFields([...], [
        {
            fieldName: "fld_sum",
            dataType: "number",
            callback: function (ds, fld, row, values) {
                var sum = 0;
                for (var i = 2; i <= 12; i++) sum += values[i];
                return sum;
            }
            // or 
            //expression: "y2000 + y2001 + y2002 + y2003 + y2004 + y2005 + y2006 + y2007 + y2008 + y2009 + y2010"
        }
    ]);
Code -2
    grid.setColumns([
        ...,
        {
            type: "calced",
            cached: true,
            valueCallback: function (column, row) {
                var sum = 0;
                for (var i = 2; i <= 12; i++) {
                    var v = row.getValue(i);
                    sum += isNaN(v) ? 0 : v;
                }
                return sum;
            },
            // 或valueExpression
            //valueExpression: "y2000 + y2001 + y2002 + y2003 + y2004 + y2005 + y2006 + y2007 + y2008 + y2009 + y2010",
            footer: { 
                expression: "sum",
                styles: { numberFormat: "#,##0", fontBold: true }
            }
        }
    ]);

我们可以在DerivedField.expressionCalculatedColumn.valueExpression中,直接使用字段名称为变量标识符。 

查看源代码 JSP 

See Also
DerivedField
CalculatedColumn