본문 바로가기

개발/Nexacro

[Nexacro 17] Dataset 동적 생성 및 로드

반응형

0. 개요

 

Nexacro 17버전으로 개발을 진행하는 중에

Design 탭에 Dataset을 추가하지 않고 동적으로 Dataset을 만든 후

특정 조건에 맞는 Dataset에 접근하여 데이터를 불러오고 싶었다

 

 

1. 데이터셋 동적 생성

 

 - 아래 소스는 Dataset을 생성하는 두가지 예제를 보여준다

 - 첫번째는 빈 Dataset을 생성하고 두번째는 데이터셋의 id와 컬럼, 데이터를 추가하는 예제

 

//Dataset Object 생성 예제 1
this.dataset_test1 = new Dataset();	
trace("\n" + this.dataset_test1.saveXML());
	
//Dataset Object 생성 예제 2 (id 포함)
this.dataset_test2 = new Dataset("dataset_test2");
	
//컬럼 추가
this.dataset_test2.addColumn("col1");
this.dataset_test2.addColumn("col2");
	
//데이터 추가
var currentRow = this.dataset_test2.addRow();
this.dataset_test2.setColumn(currentRow, "col1", "data1");
this.dataset_test2.setColumn(currentRow, "col2", "data2");
	
trace("\n" + this.dataset_test2.saveXML());

 

 - 위 소스코드를 실행하면 trace 구문에 의해 아래와 같이 생성된 Dataset을 보여준다

 - new Dataset();을 수행할때 인자의 여부에 따라 Dataset의 id가 결정된다

 

nexacro (3308)> UD 14:31:28:160 
<Dataset id="">
	<ColumnInfo />
	<Rows>
	</Rows>
</Dataset>

nexacro (3308)> UD 14:31:28:166 
<Dataset id="dataset_test2">
	<ColumnInfo>
		<Column id="col1" type="STRING" size="256" />
		<Column id="col2" type="STRING" size="256" />
	</ColumnInfo>
	<Rows>
		<Row>
			<Col id="col1">data1</Col>
			<Col id="col2">data2</Col>
		</Row>
	</Rows>
</Dataset>

 

2. 데이터셋 동적 로드

 

- 데이터셋의 이름을 문자열로 입력받아 처리하고 싶다면 방법은 여러가지가 있다

- 일반적인 경우 아래와 같이 오브젝트명을 명시하여 Dataset을 제어한다

this.dataset_test1;

 

 - 아래는 절대 사용하지 않길 바라는 예제 (eval을 사용하면 성능, 보안 등 안좋은 문제가 많고. 대체로 사용 할 수 있는 new Function 구문은 Nexacro 17에서 정상적으로 동작하지 않았다)

 

var dsName = "dataset_test1";
eval("this." + dsName);

 

 - 아래는 위 eval을 사용한 예제보다 훨씬 기분이 좋아지는 예제

 - xfdl 파일을 generated 하면 생겨나는 xfdl.js 파일에서 힌트를 얻어 사용해보니 정상적으로 동작했다

 

var dsName = "dataset_test1";
this[dsName];

 

 

 

근데 난 넥사크로 개발자가 아닌데 왜 ..

반응형