특정 값에 따라 셀(Cell)의 배경색(Color), 편집여부(CanEdit) 등을 동적으로 변경하는 기능을 제공합니다.


ex) 스크린 수가 1,000 이상인 경우 "영화명" 셀(Cell)에 배경 색을 변경하는attribute Formula 예제


attribute Formula 설정

1. 컬럼 생성시 attribute+Formula 정의하기


attribute Formula는 "속성명 + Formula" 형식으로 컬럼 생성 시 정의 됩니다.

ex) CanEditFormula , ColorFormula, ClassFormula, TextStyleFormula등

options.Cols = [
    { Type:"Bool", Name:"CHK" },

    //CHK열 값이 true인 경우 배경을 붉은색으로 표시
    { Type:"Text", Name:"A", ColorFormula:"CHK ? '#FF0000' : ''" }, 

    //CHK 열 값이 true인 경우 편집 가능
    { Type:"Text", Name:"B", CanEditFormula:"CHK?1:0" }, 

    // A열의 배경색이 붉은색인 경우, 해당 셀에 특정 class(style) 적용
    { Type:"Text", Name:"C", 
          ClassFormula: function(fr){
                if(fr.Sheet.getAttribute( fr.Row, "A", "Color") === "#FF0000") {
                      return "SPCell"; //td 테그에 SPCell 클래스가 적용됨.
                }
                return "";
          }   
     }
]


2. 계산 순서 설정하기

attribute Formula 기능 사용 시에는 (Row)CanFormula와 (Row)CalcOrder가 반드시 설정되어야 합니다. (매우 중요!!!)

options.Def.Row = {CanFormula: 1, CalcOrder: "AColor"};


여러 개의 Formula를 사용하는 경우, (Row)CalcOrder열이름 + 속성명 형식으로 계산 순서를 정의해야 합니다.

options.Def.Row = {
    CanFormula: 1,     // Formula나 AttributeFormula를 사용하려면 무조건 정의 되어야 함

    // C컬럼의 Formula 계산 후, 
    // A컬럼 ColorFormula ,  B컬럼 CanEditFormula가 계산됨. (계산 순서 주의)
    CalcOrder: "C,AColor,BCanEdit" 
};

CalcOrder 설정시 콤마(,) 구분자 앞뒤로 공백이 들어가면 안됩니다.




기타 참고 내용


가 ) Formula 내용은 문자열이나 함수로 정의 할 수 있습니다.

options.Cols = [
    // formula 내용을 문자열로 정의
    {Type: "Text", Name: "A", ColorFormula: "C < 100 ? '#FF0000' : '#FFFFFF' "},
    // formula 내용을 함수로 정의
    {Type: "Int",  Name: "B",
        ColorFormula: function(fr) {
            //함수로 정의시 반드시 설정할 값을 리턴 해 줘야 함.
            return fr.Row.A > 100 ? '#FF0000' : '#FFFFAA';
        }
    },
    ... 
]

나 ) 한번 정의된 Formula는 조회나 값 수정 시 자동으로 계산되어 반영됩니다. (수정불가)


다) 일반 Formula와 attribute Formula를 같이 사용하는 경우에는 일반  Formula가 정의된 열 이름도 

(Row)CalcOrder 속성에 추가되어야 합니다.

ex) 일반 Fomrula와 attribute Formula를 같이 사용하는 예제


라) Formula는 열(Column) 뿐 아니라 행(Row)이나 셀(Cell)에도 설정이 가능합니다. (메뉴얼 참고)