4번 문제를 풀어보자

화면을 열었을 때 다음 화면을 유지하기 위해 Form 의 Properties 중 stepindex 를 1로 변경해 준다.

// Exe 4-1
this.btn_Exe4_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	var nRow  = this.Dataset4.insertRow(0);			// row 추가하기
	var nType = this.Dataset4.getRowType(nRow);		// nRow 의 rowType 조회하기
	trace("Insert Rowtype: " + nType);				// output 으로 출력하기
	this.txtRtn2.set_value("Insert Rowtype: " + nType);		// 화면으로 출력하기
};
Dataset.getRowtype(value) 의 value 속성에 따른 Description

	this.Dataset4.setColumn(1, "FULL_NAME", "Nexacro");		// FULL_NAME 컬럼의 데이터를 "Nexacro" 로 set 하기
	var nType = this.Dataset4.getRowType(1);				// rowType 출력
	trace("Update Rowtype: " + nType);						// output 출력
	this.txtRtn2.set_value("Update Rowtype: " + nType);		// 화면에 출력

	var sCurData = this.Dataset4.getColumn(1, "FULL_NAME");	
// 현재 1행의 FULL_NAME 컬럼에 있는 데이터 get
	var sOrgData = this.Dataset4.getOrgColumn(1, "FULL_NAME");	
// 원래 1행의 FULL_NAME 컬럼에 있는 original 데이터 get
	trace("Cur Data=" + sCurData + " : Org Data=" + sOrgData);	   			
	this.txtRtn2.set_value("Cur Data=" + sCurData + " : Org Data=" + sOrgData);		

	var arrRow = [3,4,5]; 
 	this.Dataset4.deleteMultiRows(arrRow);		
	// 4-4 deleteMultiRows -> deleteRow 함수로 변경한다면? 
	// 지울 때 거꾸로 지워야 데이터가 정상적으로 지워짐 ( ex. 1 2 3 -> 3번 지우고 2번 지우고 ... )
	// var iCnt = this.Dataset4.getRowCount();
	// this.Dataset4.set_enableevent(false);
	// for(var i=iCnt;i>=0;i--)
	// {
	//     this.Dataset4.deleteRow(i);
	// }
	// this.Dataset4.set_enableevent(true);
	var nDelCnt  = this.Dataset4.getDeletedRowCount();				// 데이터 지워진거 개수
	var sDelData = this.Dataset4.getDeletedColumn(0, "FULL_NAME");	// 지워진 데이터 중에서 0번째 FULL_NAME 데이터 
	trace("Del Count=" + nDelCnt + " Del Data=" + sDelData);					
	this.txtRtn2.set_value("Del Count=" + nDelCnt + " Del Data=" + sDelData);		

// Exe4 - Data Check - 데이터 삭제된 건수가 있느냐? or 신규나 변경된 사람이 존재하는지
this.btn_Exe4_Check_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
	this.fn_checkdata(this.Dataset4);
	this.fn_checkdata(this.Dataset1);
};
this.fn_checkdata = function(objDs) {
		if(objDs.getDeletedRowCount() > 0) {	// 지워진 데이터가 1개 이상
		// alert("삭제");
		return true;
	}
	for(var i = 0; objDs.rowcount; i--)
	{
		var nRowType = objDs.getRowType(i);
		if(nRowType == 2 || nRowType == 4) {		// 신규거나 변경된 데이터
			// alert("신규/변경");
			 return true;
		}
	}
	return false;
}
// onbeforeclose - 창을 닫기 전에 시행하는 이벤트
this.Exe_Dataset_onbeforeclose = function(obj:nexacro.Form,e:nexacro.CloseEventInfo)
{
	// 원래는 confirm 메소드를 통해 확인을 받지만 
	// onbeforeclese 이벤트 내에서는 문자열로 반환해야지 올바른 형태로 나옴!
	if(this.fn_checkdata(this.Dataset4)) {
		return "변경된 데이터가 존재합니다. 닫으시겠습니까?";
	}
};