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 "변경된 데이터가 존재합니다. 닫으시겠습니까?";
}
};