계산 필드
다른 필드값에 의해 자동으로 값이 계산되는 Calculate Field는 DataField.valueExpression, valueCallback 구현할 수 있습니다.
그리고 계산 필드의 값은 수정할 수 없습니다. setValue()로 값 변경 불가, 편집 불가, ReadOnly로만 사용 가능.
valueExpression
values['필드명'], values[필드인덱스]로 값을 참조하면 되고, 수식에서 다른 calculated 필드의 참조는 허용하지 않습니다.
아래 데모는 납부 금액 = 납입 횟수 * 납입금
을 표시한 데모입니다.
var fields = [
...
{
fieldName: "PaymentAmount",
dataType: "number",
valueExpression: "values['ToMonth'] * values['SaveCost']"
}
];
dataProvider.setFields(fields);
valueCallback
계산되는 값이 단순한 사칙연산이 아니고 다양한 계산식이 필요한 경우 valueCallback을 사용하면 됩니다.
계산에 필요한 시간이 많이 필요한 경우 그리드가 느려질 수 있습니다.
아래 데모는 납입횟수가 15 이상인 경우 납부 금액 = 납입 횟수 * 납입금 * 2
를 표시한 데모 입니다.
var fields = [
...
{
fieldName: "PaymentAmount",
dataType: "number",
valueCallback: function (prod, dataRow, fieldName, fieldNames, values) {
let paymentCount = values[fieldNames.indexOf("ToMonth")];
let paymentAmount = values[fieldNames.indexOf("SaveCost")];
if (isNaN(paymentCount) || isNaN(paymentAmount))
return undefined;
else
return paymentCount >= 15 ? paymentCount * paymentAmount * 2 : paymentCount * paymentAmount;
}
}
];
dataProvider.setFields(fields);