Jam's story
넥사크로17 - 컴포넌트 활용 3 본문
Property
enableevent, keystring, rowcount, rowposition, useclientlayout…
Method
addColumn, addRow, insertRow, deleteRow, getColumn, setColumn, getOrgColumn, getDeletedColumn, filter, findRow, getAvg, getCaseAvg, clearData, reset, copyData, copyRow…
Event
onload, cancolumnchange, oncolumnchanged, canrowposchange, onrowposchanged
화면 넘기기
stepindex 로 인덱스를 지정해준다
사용자가 변경한 데이터를 저장하는 방법
this.Exe_Dataset_onbeforeclose = function(obj:nexacro.Form,e:nexacro.CloseEventInfo)
{
if(this.fn_checkdata(this.Dataset4)){
return "변경된 데이터가 존재합니다. 닫으시겠습니까? "
}
};
칼럼의 데이터 변경
this.btn_Exe4_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
this.Dataset4.setColumn(1, "FULL_NAME", "Nexacro");
var nType = this.Dataset4.getRowType(1);
trace("Update Rowtype: " + nType);
this.txtRtn2.set_value("Update Rowtype: " + nType);
};
- setColumn(row, colid,value)
- row: 값을 설정할 행의 인덱스입니다.
- colid: 값을 설정할 열의 식별자입니다. 열의 이름이나 인덱스를 사용할 수 있습니다.
- value: 설정할 값입니다.
변경전 행 찾기
// Exe 4-3
this.btn_Exe4_3_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var sCurData = this.Dataset4.getColumn(1, "FULL_NAME");
var sOrgData = this.Dataset4.getOrgColumn(1, "FULL_NAME");
trace("Cur Data=" + sCurData + " : Org Data=" + sOrgData);
this.txtRtn2.set_value("Cur Data=" + sCurData + " : Org Data=" + sOrgData);
};
getColum (row, column) : 현재컬럼
getOrgColum () : 변경전 오리지널 컬럼
넥사크로의 행 유형
- 0 (Dataset.ROWTYPE_NORMAL): 변경 없음. 일반적으로 데이터 로드 후의 상태.
- 1 (Dataset.ROWTYPE_INSERTED): 신규 추가된 행.
- 2 (Dataset.ROWTYPE_UPDATED): 기존 행이 수정된 행.
- 3 (Dataset.ROWTYPE_DELETED): 삭제된 행.
- 4 (Dataset.ROWTYPE_CURRENT): 현재 활성화된 행.
변경유무 확인
// Exe4 - Data Check
this.btn_Exe4_Check_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
this.fn_checkdata(this.Dataset4);
};
this.fn_checkdata=function(objDs){
if(objDs.getDeletedRowCount()>0){
return true;
alert("삭제");
}
for(var i=0; i<objDS.rowcount; i++){
var nRowType=objDs.getRowTyep(i);
if(nRowType==2 || nRowType==4){
this.alert("신규/변경");
return true;
}
}
return false;
}
데이터 복사 메소드
// Exe 5-1
this.btn_Exe5_1_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
//데이터만 복사 ,타입복사X
this.Dataset5.copyData(this.Dataset4);
this.Grid5.createFormat();
};
// Exe 5-2
this.btn_Exe5_2_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
//데이터도 복사, 타입도 복사
this.Dataset5.assign(this.Dataset4);
this.Grid5.createFormat();
};
조건걸어 특정 행 복사
// Exe 5-3
this.btn_Exe5_3_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nFromRow = this.Dataset4.findRow("EMPL_ID", "KR040");
var nToRow = this.Dataset5.addRow();
this.Dataset5.copyRow(nToRow, this.Dataset4, nFromRow);
};
조건걸어 복사
// Exe 5-4
this.btn_Exe5_4_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
var nFromRow = this.Dataset4.findRow("EMPL_ID", "KR210");
var nToRow = this.Dataset5.addRow();
var sCol = "EMPL_ID=EMPL_ID, FULL_NAME=FULL_NAME";
this.Dataset5.copyRow(nToRow, this.Dataset4, nFromRow, sCol);
};
수정 전 중복검사
// Exercise 6 ================================================================
this.Dataset6_cancolumnchange = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{
// var nCnt=obj.findRowExpr("FULL_NAME =='"+e.newvalue +"' && currow != "+e.row);
// if(nCnt>=0){
// this.alert("Data 중복");
// return false;
// }
trace("cancolumnchange");
};
this.Dataset6_oncolumnchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{
trace("oncolumnchanged");
};
중복검사는 cancolumnchange에 로직을 넣는 것이 효율적이다
데이터 변경시 이벤트 끄기
// Exe 6-5
this.btn_Exe6_5_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
this.Dataset6.set_enableevent(false);
for(var i=0; i<10; i++){
this.Dataset6.setColumn(i, "FULL_NAME", "Modify2");
}
this.Dataset6.set_enableevent(true);
};
데이터셋 이벤트를 잠시 비활성화하여 불필요한 이벤트 발생을 방지하고 성능을 향상시키는 용도
'Nexacro17' 카테고리의 다른 글
넥사크로17 - popupdiv (4) | 2023.11.26 |
---|---|
넥사크로17 - 컴포넌트활용4 그리드 (1) | 2023.11.26 |
넥사크로 17 - 컴포넌트 활용 2 (2) | 2023.11.25 |
넥사크로17 데이터통신 (0) | 2023.11.19 |
넥사크로 17 - 데이터 바인딩 (1) | 2023.11.17 |
Comments