넥사크로 expr 다른 데이터셋 - negsakeulo expr daleun deiteoses

어흥

Nexacro

[Nexacro] Grid + Expression

라이언납시오 2020. 8. 6. 09:09

1. 목적: Grid의 특정 Column에 대한 Expression을 설정하고 싶을 때 사용한다

2. 적용하는 Cell: Summ Row의 특정 Column의 합계나 평균을 구할 때 사용하거나, 서버로부터 받은 데이터를 표시하는 Cell에 사용 가능하다

3. 적용 방법

  1) Grid 더블클릭 -> Grid Contents Editor 화면으로 이동

  2) 특정 Cell 클릭 이후, 타입 | 값 형태로 이루어진 표에서 '값'에 해당하는 영역 가장 우측에 'Set Expression' 버튼을 클릭하여 설정

4. 예시

  1) Binding 설정한 데이터에서 Summ Row에서 Column "Salary"의 총합을 얻고 싶을 때

    : Binding>expr 에 expr:dataset.getSum("Salary") 입력

  2) 입력받는 값에 따라 Cell의 displaytype을 바꾸고 싶을 때

    - Binding>text 에 bind: ARRIVAL_DATE일 때

    - Action>displaytype에 expr:ARRIVAL_DATE.length == 8 ? 'date' : 'normal'로 설정하여 ARRIVAL_DATE의 길이가 8      이면 Date type, 아니라면 Normal type

  3) 서버로부터 입력 받는 값을 DATE 형식(YYYY-MM-DD)으로 MASKING하고 싶을 때(해당 Cell이 Text로 지정되어 있    을 때)

    - Binding>text에 bind:START_DATE일 때

    - Appearance>mask에 ####-##-##입력

※응용

4) 3)에서 받은 START_DATE가 NULL일 때는 Masking을 취하고 싶지 않을 때(응용 가능)

    - Binding>text에 bind:START_DATE일 때

    - expr:String(START_DATE).valueOf() == "undefined" ? "" : "####-##-##"

    - NULL 데이터를 넘겨 받을 경우, 출력해보면 Undefined라고 출력된다. 따라서 Undefined인지 확인하는 방법인          String.valueOf()를 통해 처리한다

Web2021. 10. 4. 19:07

1. Grid에서 maskedit를 나타내는 방법.

displaytype, edittype을 mask로

maskeditforamt을 AA-###으로,

maskedittype을 string으로.

combotext

목록형 컴포넌트는 innerdataset을 지정해야되는데 combodataset이 그 역할을 한다.

combotext와 combocontrol은 단순 UI차이이니 사용자들에게 맞게 설정해주면 된다.

currow는 예약어이다. 인덱스 정보를 넘겨준다.

인덱스는 0번부터 시작하기 때문에 +1을 하여 1부터 시작되도록한다.

dataset.getRowCount() + '건' :

dataset은 해당 GRID에 Binding된 dataset을 의미한다.

comp: GRID를 의미함.

comp.parent.ds_emp.getRowCount() + '건'

기본적으로 Grid에 바인딩 된 Dataset을 참조 할 때는 dataset.을 사용하면 됩니다.

Expression을 작성하다 보면 바인딩 된 Dataset이 아닌 다른 Dataset도 참조를 할 수 있습니다.

그래서 직접 Dataset을 참조하는 방법을 알려 드렸습니다.

expr:dataset.getSum("SALARY")

여기서 중요한 내용은 getSum()을 하기 위해 사용한 SALARY컬럼의 TYPE이 Integer(숫자)형 이어야 합니다.

기존에는 bind:GENDER로 표기되어 있었다.

GENDER == "M" ? : 조건문

expr:GENDER == "M" ? "남자" : GENDER == "W" ? "여자" : "기타"

expr:EMPL_ID + "-" + FULL_NAME

만일 이 컬럼들의 type이 숫자형태라면 + 연산이 되어버린다.

그래서 중간에 구분자("-")를 넣으면 문자열 조합으로 인식되어,

최종 type은 String이 된다.

25분09초

expr:comp.parent.var1

expr:comp.parent.var2

var 변수는 참조가 되지 않으니, this.var로 쓸것.

comp.parent.fn_name(currow + 1)

fn_name(..)을 호출하면서 parameter로 currow + 1을 넘겨준다.

결과화면

자바스크립트의 Math.round는 소수 둘째,셌재 상관없이 무조건 첫번째 자리에서 반올림을 한다.

그래서 원하는 소수점 두 번째 자리 수 까지 표현하고자 한다면 추가적인 Script 코딩을 해야만 했다.

그런데 nexacro.round()를 사용하게되면 여러줄 작성해야 했던것을 한 줄로 표현할 수 있다.

*바인딩과 expr이 함께 있는 경우 expr이 우선이다.

이 말이 무슨 말일까?

원래라면 사실 text에 binding하는게 아니고 이렇게 써준는 것이 정석이다.

그런데 만일, text와 expr이 같이 있으면 text: bind:GENDER는 의미가 없다.

expr에

GENDER == "M" ? "남자" : GENDER == "W" ? "여자" : "기타" 이렇게 적어주고

text- bind:GENDER를 삭제해버려도 정상적으로 작동한다.

즉, expr에 삼항연산자를 적용하는 순간,bind:GENDER의 기능은 아무런 의미가 없다. 삭제해도된다.

이미 expr에 적용하였기 때문에 text에 동일하게 적혀진다.

그래서 실제로 되는지 테스트해봤는데 기타는 이미 있었던 항목이고

default로 여자로 설정되어있는데 동일하게 작동됨을 확인할 수 있었다.

왜 여자로 셋팅 됬느냐.. 그냥 이 프로젝트에서 default로 이렇게 설정되게 코딩이 되어있었다.

Toplist

최신 우편물

태그