SMART datagrid v1.4 > Examples

Back  Forward

계산(Derived) Fields  Example

유도(계산) 필드는 일반 필드들의 값들로 계산된 결과를 저장하는 필드다. DataSet.setFields로 데이터셋에 필드들을 설정할 때 일반 필드와 구분해서 지정하고, 항상 일반 필드들 이 후에 위치한다. 

Code -1
    var fields = [...];
    var calcedFields = [...];
    ds.setFields(fields, calcedFields);
Grid - 1
rows

유도 필드의 값은 expression 수식이나, callback 콜백 함수로 지정할 수 있다. 위 예제에서 "합계" 필드는 수식으로, "합계2" 필드는 콜백 함수로 지정됐다. 계산 컬럼과 달리 계산 필드는 실제로 값들이 데이터셋에 저장되므로 예제에서 처럼 footer에 합계 값을 표시할 수 있다. 

Code -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에는 예제에서 처럼 다른 필드의 이름을 직접 변수로 사용할 수 있지만, 다른 계산 필드를 참조할 수는 없다. 또, 필드명이 숫자로 시작하는 경우 수식 파서가 먼저 숫자값으로 인식하게 되므로, 아래 처럼 "values" 연산자를 사용해야 한다. 

Code -3
    var calcedFields = [{
        fieldName: "amount",
        expression: "values['01_unit'] * values['02_unit']"
    },
    ...
    ]

소스보기 JSP 

See Also
DerivedField
DerivedField.expression
DataSet.setFields
수식 개요
Examples
Row Summary