현재 선택된 줄에서 조건에 따라 그리드안의 타입을 바꾸고 싶다. 삼항 연산자를 써서 데이터셋의 타입을 바꿔주자
expr:dataset.getRowType(currow) == 2 ? "date" : "none"
이렇게 원하는 로직에만 date타입을 주어 추가행이 아닌 경우에는 값이 나오지 않게한다.
dataset.getRowType == 0 : 존재하지 않은 행 / 1 : 초기 행 / 2 : 추가 행 / 4 : 수정 행 / 8 : 삭제 행
( 추가된 행이면 date타입으로, 아니라면 수정 불가 )
expr : 표현식 (expression)
currow : 수식이 계산하고 있는 행의 인덱스 (current row)

퇴사자에게만 특별히 파란색 선을 긋고 싶다.
properties에 style에 textDecoration 바꿔서 만들 수 있을것 같지만 textDecoration을 이용하면 내가 만들고 싶은 조건(퇴사자만 파란줄 긋기)에 따라 파란줄을 긋는것이 아닌 모든 이름에 파란줄을 그어버린다.

동적 표현하기 위해선 이 빨간 동그라미 표시가 필요하다. textDecoration에선 expr을 쓰지 못한다.

그러므로 cssclass에 계산식을 써서 만들어 보자

expr:String(RETI_DD).valueOf() == "undefined" ? "":"cell_Mark_UnderLine"
DB안에 퇴사자는 퇴사일(RETI_DD), 아닌 사람은 NULL값이 들어있는 상태이다.
String으로 바꾸고 valueOf()로 꺼내면 퇴사자는 퇴사일, 아닌 사람은 undefined가 나온다.
삼항연산자에 퇴사자면undefined이 false 이므로 cell_Mark_UnderLine인 css를 실행시키고 퇴사자가 아닌 사람은 undefined가 true이므로 ""를 실행, 즉 그냥 냅둔다.
++
이렇게 써도되고 ㅎㅎ (대신 이렇게 쓰면 공백처리 못해줌)
expr:RETI_DD == null ? "" : "cell_Mark_UnderLine"

xcss에다가 cell_Mark_UnderLine(파란줄 긋는 코드)을 미리 지정해 놔야 한다.
왼쪽 Project Explore 옆에 Resource Explorer 에서
Theme -> default -> theme.xcss에서 설정할 수 있다.

Resource Explorer에서는 css부분을 디테일하게 원하는 부분을 수정할 수 있다.
원하는 색은 color를 바꿔주면 끝 !


데이터 수정시 빨간 동그라미 부분이 바뀌게 하고 싶다.
저 부분은 데이터를 뿌리는 곳이 아니고 xcss를 사용해서 디자인을 입히는 곳이다.
디자인(cell_WF_Insert, cell_WF_Modify, cell_WF_Delete01)은 전에 했던 대로 theme.xcss로 설정
업무로직에 의해 insert는 I, update는 U, delete는 D로 셋팅된다.
expr:comp.parent.gfn_Decode(crudType, "I","cell_WF_Insert", "U","cell_WF_Modify", "D","cell_WF_Delete01", "")
expr을 이용해서 I, U, D 에 따라 XCSS(디자인)가 바뀌게 표현식을 수정했다.
comp : 그리드
parent : 그리드의 부모함수. 만약 그리드가 div위에 존재시 한번 더 붙이기
gfn_Decode : 공통코드 (공개해도 되는지 모르기 때문에 안함)
화면에서 db에 있는 데이터값을 그대로 가지고 와서 뿌리는 것이 아닌 로직에 따라 가져온 값을 커스텀해서 보여주어야 하는 경우가 있다.
기간이 1년 이상일 떄, 1년 미만일 때 나오는 값을 다르게 손보고 싶다.

expr:WORK_DT >= 1 ? WOFH_ST != '0040' && WOFH_ST != null ? JANY_CT <= 0 ? 'normal' : 'combotext' : 'normal' : 'normal'
Grid Contents Editor 에 displaytype에 들어가는 코드이다.
타입이 콤보로 바뀌는 순간은 근속개월수 1년이상, 결재상태이나 승인된 상태는 아닐때 이다
expr:WORK_DT >= 1 ? YPLH_SQ == '0030' ? WOFH_ST == null ? '미제출' : STTS : '미제출' : ''
Grid Contents Editor 에 text에 들어가는 코드이다.
STTS로 바뀌는 상황은 근속개월수가 1년이상, 근속차수 1년이상, 결재상태가 null값이 아닐때 이다.
1년 미만의 셀을 채우기 위해선 표현식 값이 'WORK_DT < 1' 이렇게 바뀔것이다.
STTS는 로직에 따라 따로 쿼리에 만들어 주었는데 단어 또는 코드가 들어갈 수 있다.
그거에 맞추어 displaytype은 단어가 들어가면 normal, 코드가 들어가면 combo로 정해주어야 빈값이 나오지 않는다.
WORK_DT : 근속개월수
YPLH_SQ : 차수 (0030:1년이상 0010:1차 0020:2차)
WOFH_ST : 결재상태 (0040:승인)
STTS : 로직에 따른 text 또는 코드 값

회계전표번호 : AC_NO
그리드 더블 클릭 하면 나오는 창에서 

회계전표가 없으면 X 표시하게 해줌
저기 보면 suppress 로 그룹핑 해줬는데
이거 때문에 데이터가 빈 값이어서 안나오는지 suppress 해서 안나오는건지 구분할 수가 없음..
그래서 구분을 위해 빈값은 'X' 표시해줬음 !
db에 빈값이면 표현식 만들때 ''로, NULL이면 null 로 해줘야함
(근데 이상한건 DB에 NULL로 들어가있는데 왜 NULL로하면 안되고 null로 해야 동작하는거지?)
넥사크로는 expr이 제일 재밌다. 근데 아직 잘 모르겠다. 사용할 때마다 두근거린다.
표현식 같은경우는 함수로 따로 빼서 쓸 수 있음
너무 많이 쓰면 속도 느려짐..
빈값을 체크할때 undefined로 할지 ''로 할지 null로 할지 고민이 필요
피드백 및 조언 및 훈수 대환영입니다 !!
https://www.hentai-foundry.com/user/bothbest/blogs/20379/Top-Bamboo-Flooring-Styles-Dominating-Modern-Interiors
https://blog.libero.it/wp/bothbestbamboo/2025/09/07/color-trends-bamboo-flooring-from-blonde-tones-to-rich-espresso/
https://blog.libero.it/wp/bothbestbamboo/2025/09/06/choosing-the-right-bamboo-flooring-for-family-home/
https://qualityherb.livepositively.com/what-sets-premium-bamboo-flooring-apart/
https://www.edufex.com/forums/discussion/general/japan-vs-china-bamboo-flooring-a-technologists-perspective
https://qualityherb.livepositively.com/natural-vs-carbonized-bamboo-flooring-a-deep-dive-into-color-performance-and-manufacturing/
https://www.hentai-foundry.com/user/bothbest/blogs/20387/Buying-Click-Strand-Woven-Bamboo-Flooring-from-China
https://zybuluo.com/bothbest/note/2622032
https://www.chambers.com.au/forum/view_post.php?frm=3&pstid=107382
https://spcfactory.blogspot.com/2024/03/5-reasons-why-bamboo-is-superior.html
https://spcfactory.blogspot.com/2024/03/the-ultimate-guide-to-maintaining-your.html
https://spcfactory.blogspot.com/2024/10/the-pros-and-cons-of-12mm-spc-flooring.html
https://spcfactory.blogspot.com/2025/09/adhesives-and-lacquers-in-durable.html