为了显示以行为单位的合计值,我们需要使用计算列或衍生字段。 下列两个"Sum"列中,第一个是连接在衍生字段的列,而第二个则是计算列。 虽然这两个例题中所显示的是相同的结果,但计算列和衍生字段的使用目的有可能会不一样。 最重要的是,如下列网格中所示,计算列的页脚无法显示合计。 这是因为它不会单独储存包含在计算列的单元格的值,而只是在显示时,会被临时计算。
// 设置衍生字段。
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"
}
]);
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.expression或CalculatedColumn.valueExpression中,直接使用字段名称为变量标识符。