본문 바로가기
프로그래밍/Nexacro 17

2022년 2월 13일 - Dataset의 이벤트 처리 순서, 이벤트 발생 멈추기

by 철제백조 2022. 2. 13.

http://demo.nexacro.com/EduPlay/_web_/index.html?version= 

 

http://demo.nexacro.com/EduPlay/_web_/index.html?version=

 

demo.nexacro.com

 

 

//cancolumnchange는 Dataset의 Column 값이 변경될 때 발생하는 이벤트
//false 값을 반환할 경우, oncolumnchanged Event가 발생하지 않고 수정된 데이터도 원복
this.Dataset00_cancolumnchange = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{
	trace("cancolumnchange");
	
	//데이터를 수정하는 순간 다시 원래의 값으로 원복된다.
	//데이터가 변경되지 않았기에 oncolumnchange는 발생하지 않는다.
	//return false;
	
	//!!!중복체크 구현!!!
	//findRowExpr은 조건표현식을 만족하는 첫번째 Row의 인덱스를 반환
	//이름 컬럼과 데이터셋에서 새롭게 변경하는 값을 e 인자를 통해 newvalue로 받아서 비교
	//현재 Row 인덱스값과 변경된 Row 값, 즉 포커스가 선택되어 있는 Row와 다를 때 비교한다.
	var nCnt = obj.findRowExpr("FULL_NAME == '" + e.newvalue + "' && currow !=" + e.row);
	
	//복합 조건에 일치하는 첫번째 Row 값을 반환하는 findRowExpr 메소드의 반환값을 받아서 if문 처리한다
	if(nCnt > -1){
		//중복일 경우 false값 반환하여 반환 불가능 설정
		this.alert("Data Duplication");
		return false;
	}
};


//oncolumnchanged 는 Dataset의 Column값이 변경된 후에 발생하는 이벤트
this.Dataset00_oncolumnchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{
	 trace("oncolumnchange");
};


//위의 이벤트 변경 확인을 위해서 이름을 변경할 수 있도록 설정할 것 - Grid 편집창을 열어 edittype을 text로 변경


//이름들 싹 바꾸는 이벤트 설정 - row의 개수만큼 메시지가 출력
this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{

	//Dataset은 데이터를 변경할 때마다 이벤트가 발생하는데 잦은 이벤트 발생은
	//처리 속도 지연이나 화면 깜빡임 등의 증상으로 나타날 수 있다.
	//따라서 데이터가 많은 경우에는 변경 전에 이벤트를 껐다가
	//변경 후에는 다시 이벤트를 키도록 처리하면 그런 증상을 완화할 수 있다.
	
	//for 반복문이 돌기 전에 enableevent 속성값을 false로 줘서 이벤트를 멈출 수 있다.
	this.Dataset00.set_enableevent(false);
	
	for(var i=0; i<this.Dataset00.rowcount; i++){
		
		//i번째 행의 이름 컬럼 변경하기
		this.Dataset00.setColumn(i,"FULL_NAME","변경"+i);
	}
	
	//for 반복문이 끝나면 다시 enable 속성값을 true로 변경
	this.Dataset00.set_enableevent(true);

	//output에 on, cancolumn 이벤트 발생 X
};

댓글