衍生字段是一种储存由一般字段的值所得出的结果的字段。 当通过DataSet.setFields而在数据组设置字段时,应与一般字段区分指定,并且总是将其放置在一般字段之后。
var fields = [...];
var calcedFields = [...];
ds.setFields(fields, calcedFields);
我们可以通过expression或callback,指定衍生字段的值。 上述例题中,"合计"字段由表达式、"合计2"字段由回调函数所指定。 不同于计算列的是,衍生字段将会实际将值储存在数据组中,所以如例题所示,我们可以在页脚显示合计值。
var calcedFields = [{
fieldName: "amount",
expression: "unit_price * quantity" // 可以使用其他字段的名称为变量。
}, {
fieldName: "amount2",
callback: function (ds, fld, row, values) {
return values[8] * values[9];
}
}];
dataset.setFields(fields, calcedFields);
如例题,expression可以直接使用其他字段的名称为变量,但不能参考其他衍生字段。 另外,因为当字段名称以数字开头时,PARSER会首先将其识别为数值,所以这时我们需要使用以下"values"运算符。
var calcedFields = [{
fieldName: "amount",
expression: "values['01_unit'] * values['02_unit']"
},
...
]