넥사크로 onload

형아·2025년 1월 13일

Nexacro

목록 보기
18/18

이젠 combo나 listbox 선택했을 때, 데이터도 db에서 가져오는 것을 연동해 볼 것임.

이게 무슨 뜻이냐면,

기존에는 XML 정의(innerdataset)에서 작성된 데이터만 표시되었다면,

onload 에서 transaction 을 호출 한 후에는 서버에서 데이터를 가져온다는 것

코드성 데이터를 처리하는 방식

코드성 데이터

주로 어클리케이션 전반에서 사용되는 정적인 데이터를 의미한다. 일반적으로 자주 변경되지 않기 때문에 사용자가 직접 수정하거나 입력하지 않고 주어진 옵션에서 선택하도록 유도하는, 읽기 전용으로 사용되는 데이터이다. 주로 키-값 구조로 되어있다.

예) 성별 목록

  • GENDER_CD : 성별코드
  • GENDER_NAME : 성별 이름
[
    { "GENDER_CD": "M", "GENDER_NAME": "Male" },
    { "GENDER_CD": "W", "GENDER_NAME": "Female" },
    { "GENDER_CD": "E", "GENDER_NAME": "Other" }
]

코드성 데이터를 처리하는 방법

1. form 로딩시 호출

  • 코드성 데이터가 필요할 때마다 호출하는 방식
  • 예 ) transaction()을 사용해 서버에서 데이터 가져옴
  • 장점 : 각 폼에서 필요한 데이터만 로딩 -> 불필요한 데이터 로드 감소
  • 단점 : 폼 로딩 시마다 호출 -> 서버 요청이 많아질 수 있음

2. app 로딩 시 global에 보관했다 필요시 가져오기

  • 앱이 시작될 때 한 번만 호출하여 데이터를 가져온 뒤, 전역 객체(Global Variable)에 저장하고 필요시 가져옴
  • 장점 : 데이터 재사용 -> 서버요청 최소화
  • 단점 : 초기 로딩 속도 느려질 수 있고, 모든 폼에서 사용하지 않는 데이터를 미리 불러오게 될 가능성

주로 form이 로딩시 호출하는 방식을 사용함.


form 로딩시 호출 하는 방법

폼 선택>
빈영역 선택
프로퍼티> event > onload 선택

  • 코드성 데이터는 별도의 콜백함수 처리할 필요 x

Script에 다음과 같이 이벤트 함수에 transaction함수 추가

//onlead :: 
this.Form_Emp_exe_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo)
{
		this.transaction(
		"strCode",
		"SvcURL::select_code.jsp",
		"", //client -> server 저장 (server ds = client ds)
		"ds_dept=out_dept ds_pos=out_pos", //server -> client 조회 (client ds = server ds) :여러개의 ds받을 수 ㅇㅇ
		"arg1=1 arg2=2", //조회 조건 parameter , 변수와 변수 구분은 ""(space)
		"fn_callBack" //코드성 데이터는 별도의 콜백함수 처리할 필요 x
		);
};


즉, 이전에는 xml에 정의된(dataset) 데이터를 불러왔음 (Source탭에서 확인 가능)
      <Dataset id="ds_dept">
        <ColumnInfo>
          <Column id="DEPT_CD" type="STRING" size="32"/>
          <Column id="DEPT_NAME" type="STRING" size="32"/>
        </ColumnInfo>
        <Rows>
          <Row>
            <Col id="DEPT_CD">01</Col>
            <Col id="DEPT_NAME">Accounting Team</Col>
          </Row>
          <Row>
            <Col id="DEPT_CD">02</Col>
            <Col id="DEPT_NAME">HR Team</Col>
          </Row>
          <Row>
            <Col id="DEPT_CD">03</Col>
            <Col id="DEPT_NAME">Sales Team</Col>
          </Row>
          <Row>
            <Col id="DEPT_CD">04</Col>
            <Col id="DEPT_NAME">Design Team</Col>
          </Row>
          <Row>
            <Col id="DEPT_CD">05</Col>
            <Col id="DEPT_NAME">Education Team</Col>
          </Row>
        </Rows>
      </Dataset>
<Dataset id="ds_pos">
        <ColumnInfo>
          <Column id="POS_CD" type="string" size="32"/>
          <Column id="POS_NAME" type="string" size="32"/>
        </ColumnInfo>
        <Rows>
          <Row>
            <Col id="POS_CD">04</Col>
            <Col id="POS_NAME">Officer</Col>
          </Row>
          <Row>
            <Col id="POS_CD">03</Col>
            <Col id="POS_NAME">Assistant Manager</Col>
          </Row>
          <Row>
            <Col id="POS_CD">02</Col>
            <Col id="POS_NAME">Division Manager</Col>
          </Row>
          <Row>
            <Col id="POS_CD">01</Col>
            <Col id="POS_NAME">Chairman</Col>
          </Row>
        </Rows>
      </Dataset>

참고로 지금 뜨는 데이터는 테스트데이터로,
데이터셋 더블클릭 > Dataset Editor에서 확인 가능임

이 테스트 데이터는 개발이 끝나면 지워줘야한다!!!


이제는 transaction을 실행해서 서버에서 ds_pos ds_dept 데이터를 업데이트 했기 때문에 새로운 데이터로 교체됨 (test data 아닌 실제 DB에서 가져온 데이터)



넥사크로에서 디버깅할 때 많이 쓰는
alert()trace()this. 생략 가능 (정석은 scope를 붙여주는 것이긴 함)

profile
개발새발

0개의 댓글