[Nexacro] 컴포넌트활용 DatasetExe 4번

Gajun Choi·2022년 9월 13일
0

Nexacro

목록 보기
4/6

DataSet 예제 문제

4번 문제를 풀어보자

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

4

4-1) 최상위에 새로운 Row를 삽입하고 Row 상태값을 확인

// 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

  • 0 : 존재하지 않는 행의 상태
  • 1 : 초기 행의 상태
  • 2 : 추가된 행의 상태
  • 4 : 수정된 행의 상태
  • 8 : 삭제된 행의 상태
  • 16 : 그룹 정보 행의 상태

4-2) 두 번째 Row의 성명 컬럼을 "Nexacro" 로 변경하고 레코드 상태 값 확인

	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);		// 화면에 출력

4-3) 변경되기 전과 후의 성명 데이터 확인.

	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);		

4-4) Row Index가 3,4,5 dls fpzhemfmf ajfxl tkrwp

	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);

4-5) 삭제한 레코드 개수와 삭제한 성명 데이터 구하기

	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);		

check) 데이터 변경여부 체크(데이터 insert / delete / set 여부)

// 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 "변경된 데이터가 존재합니다. 닫으시겠습니까?";
	}
};
profile
개발하는헬창

0개의 댓글