본문 바로가기

Learn

expr 고급지게 사용하는 노하우 2 - 그리드에서 데이터셋 사용자함수 활용

Intro.

지난 기고문에 이어 그리드 Expr을 활용하는 방법 중 데이터셋과 사용자함수를 이용한 활용 방법을 공유하도록 하겠다.

 

how to expr

그리드 소계 텍스트를 Expr를 통해 설정하는 예시를 단계별로 설명하여 데이터셋 예약어 사용 및 사용자함수를 구현하는 방법에 대해 공유한다.

 

그리드에 소계를 표현하는데 소계 Row에 “소계”라는 텍스트를 출력하고 싶어요.

1. getRowLevel() 함수를 통해 현재 Row의 레벨 값을 구한다.

2. 레벨값이 0일 경우 기존 컬럼 정보를 보여준다.

3. 레벨값이 0 아닐 경우 [소계]를 보여준다.

4. 위의 기능을 Expr로 구현한다.

 

Expr에 적용할 스크립트를 작성해 보면 다음과 같이 사용할 수 있다.

 expr 수식 : dataset.getRowLevel(currow) != 0 ?  ”소계” : [컬럼명]

 

소계 텍스트가 아니라 컬럼데이터 + 소계를 텍스트로 출력하고 싶어요.

1. 위와 같이 설정한다.

2. 레벨값이 0이 아닐 경우 currow - 1에 해당하는 컬럼값과 [소계]를 같이 표현한다.

Expr에 적용할 스크립트를 작성해 보면 다음과 같이 사용할 수 있다.

expr 수식 : dataset.getRowLevel(currow) !=0 ? dataset.getColumn(currow-1) + ” 소계” : [컬럼명]



그룹 2개 이상의 컬럼데이터 + 소계를 출력하고 싶어요.

좀더 복잡한 수식이 필요하므로 expr로 설정하여 관리하기 힘들 수 있다. 이럴 경우 사용자함수를 통해 expr을 설정하도록 한다.

expr 수식 : dataset.parent.fnGetSubsumText(dataset , currow)


이때 사용자 함수가 선언된 폼의 scope을 찾는데 주의가 필요하다. 그리드의 부모가 해당 폼일 경우의 scope는 다음과 같다.

Form Component > Grid Component

그렇다면 expr에서 접근하기 위해  [comp.parent.사용자함수명] 와 같이 작성하면 사용 할 수 있다. 하지만 그리드의 부모가 해당 폼이 아니고 중간에 Div가 하나 추가된다면  그리드와 폼까지의 scope는 다음과 같다.

Form Component > Div Component > Form Component(Div 내부폼) > Grid Component

이 경우 해당 함수에 접근하기 위해 [comp.parent.parent.parent.사용자함수]와 같이 작성이 필요하고 scope의 깊이가 깊을수록 스크립트 작성이 어려워 진다. 필자의 경우 그리드에 바인드된 데이터셋의 경우 주로 해당 폼에 있는 데이터셋을 사용하므로 [dataset.parent.사용자함수명] 방식을 선호한다. (대부분 로컬 or 글로벌 데이터셋 둘 중 하나다.)

사용자 함수에 작성된 스크립트를 정리하면 다음과 같다.

this.fnGetSubsumText = function (dataset, currow)
{
	var sRtnString = "";
	var nRowLevel = dataset.getRowLevel(currow);

  if(nRowLevel==2)
  {
  	sRtnString = dataset.getColumn(currow-nRowLevel, "Column1") + " 소계";
  }else if(nRowLevel==1)
  {
  	sRtnString = dataset.getColumn(currow-nRowLevel, "Column2") + " 소계"
  }else
  {
  	sRtnString = dataset.getColumn(currow-nRowLevel, "Column1");
  }
  return sRtnString;
}

 

PS.

만약 추가적인 expr 활용 방법이 궁금하다면 Feedback 메뉴를 통해 요청하길 바란다. 참고로 데이터셋의 findRow(), getSum(), getCaseSum()등과 같은 함수도 expr 구문을 사용할 수 있고 이를 활용한 데이터 집계 처리 및 데이터 찾기가 가능하다.

 

플레이넥사크로 바로가기

https://www.playnexacro.com/

 

play nexacro

A community of nexacro platform.

www.playnexacro.com