넥사크로 Grid Expression 과 Script

형아·2025년 1월 9일

Nexacro

목록 보기
15/18

바인딩으로 처리할 수 없는 문제들이 있음..

그런건 Expression으로 !!

Expression의 해결방법 7가지

  1. 사칙연산
  2. 예약어
  3. 메소드
  4. 내부함수
  5. 함수호출
  6. 변수참조
  7. 삼항연산


예약어

컬럼 우클릭 > insert : 새 컬럼 맨 앞에 추가
컬럼 우클릭 > add : 새 컬럼 맨 마지막에 추가

셀 클릭 > 프로퍼티 : text 클릭 > 마지막 아이콘 : set expression

currow+1 : Row의 index 정보를 넘겨줌
(index가 0부터 시작하는데, 1부터 시작했음 해서 +1 함)

이제 맨 앞에 넘버링 됨

메서드

1. getRowCount()
1.1. summary 부분 no 컬럼의 셀 부분 클릭 > text > set expression > dataset.getRowCount() + '건'

  • scope가 중요
    그래서 앞에 dataset. 이 접두어로 들어감
    여기서 지칭하는dataset는 현재 grid에 바인딩된 dataset
    즉, ds_emp

1.2. 같은 방법으로 이번엔 comp.parent.ds_emp.getRowCount()+'건'

  • comp는 gird를 의미하고 grid의 parant까지 가서 ds_emp 라는 dataset에 직접 접근

일반적으로 1.1 번 방법을 쓰지만, 현 grid에 바인딩 된게 아닌 다른 dataset의 데이터에 접근하려면 1.2 번 방법을 쓴다.

2.getSum()
같은 방법으로, 조회되는 직원들의 SALARY의 합계를 구할 것이다.
dataset.getSum("SALARY")

  • 현재 컴포넌트(grid)에 바인딩된 datset 즉, ds_emp에 접근해서 메서드를 사용하는 거임

*tip : displaytype을 number로 하면 ,로 3자리씩 끊어짐

삼항연산자

기존에는 성별 컬럼에 ds_emp의 GENDER 컬럼이 바인딩 되어있어서 셀에 M, W, E로 표기되었던 것을 한글로 표현.
위 이미지 참고.
GENDER=="M"?"남자" : GENDER=="W"? "여자" : "기타"

사칙연산

새로운 컬럼을 하나 만들어서 '사번-이름' 형태로 표기해보자

EMPL_ID + "-" + FULL_NAME

짠.

변수참조

var 변수 vs this변수

여태 바인딩과 Grid expression으로만 해결했지만, Script를 써보자.

일당 해당 폼의 Script탭을 선택 후
var변수와 this변수를 비교해보자

그리고 그리드에 컬럼을 추가한 후
body의 cell에
comp.parent.var1
해당 컴포넌트(Grid)의 parent(Form)의 변수 var1 호출

마찬가지로 comp.parent.var2
*tip : 여기서는 this. 붙이지 않음


실행결과 var1( var 변수)은 참조되지 않고 var2(this변수)만 참조됨

Form과 Form 간에 참조할 때, this변수는 참조 가능하지만, var변수는 참조되지 않는다.

함수호출

script 탭에 다음과 같은 내용 추가

this.fn_name = function(arg)
{
	return arg + "pos";
}

이후 design 탭으로 와서 grid 더블클릭 > 컬럼 추가 > text에서 expression 추가
parameter로 currow+1을 넘겨줌

comp.parent.fn_name(currow+1)

내부함수

넥사크로는 javascript기반이기 때문에 기본적으로 javascript의 표준내장함수를 따르지만,
nexacro.로 시작하는 고유 API 를 사용해 볼 것임

  • nexacro.round(value, precision) : 숫자를 반올림
    예 ) nexacro.round(3.14, 2)
    출력 ) 3.14

  • javascript에서 제공하는 Math.round()
    무조건 소수점 첫재짜리에서 반올림
    더 아래의 자리에서 반올림 하려면 Math.round((3.14 * 100)/100.0) 이런 식으로 해야 3.14의 값을 얻을 수 있음..


바인딩과 expr(Expression)이 함께 있을 경우 expr이 우선한다.

text > set expression 으로 작성 expression을 썼지만,
사실 expr 라는 프로퍼티가 있음.
여기에 쓰는게 정석임.

그리고 만약 이 둘에 다 값이 들어가 있다면, text에 있는 값보다 expr 에 있는 값이 우선됨.

업로드중..

profile
개발새발

0개의 댓글