콤보 일떄 첫 위치 정하기 : .setindex(1);
엔터키 입력 : (e.keycode == 13) { };
자동 포커스, 그리드에서 원하는 위치로 보내기 : .setCellPos(3);
팝업 호출 : .gfn_PR0600Pop(sPopupId, oArg);
팝업에서 값 내보내기 : .saveXML();
사진등록 : .set_image(sUrl sImageUrl);
첨부파일 : .fn_SetCommFileScrnAuth(oScrnAuth);
값 지정 : .setColumn(this.ds_Master10.rowposition, "DRAF_AM", "0");
특정 벨리데이션 추가 : .fn_VaildMasterSave =
선택한Row 줄 긋기 : .gfn_SetGridSelectRowColor(obj, e.row);
엑셀 저장 : .gfn_ExcelExport(this, objGridList, sFileName);
사용여부에 따라 값 노출 : this.ds_Master10_oncolumnchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{ if (e.columnid == "OD_DT") (e.columnid == "USED_YN") { };
숫자 format 해주기 : .set_format("@@@-@@@@@@");
** 팝업 찾기
src->main->nxui->nexacrolib->component->extProtype->Popup.js
** 날짜 포맷해서 가지고 오기
gfn_GetCommDate(" ") // "" 안에는 nextMonth, toDayFull 등등 으로 포맷 가능
ex) this.ds_Master10.setColumn(this.ds_Master10.rowposition,"DL_DT",this.gfn_GetCommDate("toDayFull"));
** 사용자정보(세션) 가지고 오기
gfn_GetSessionValue(""); // "" 안에는 USEM_NM, DEPM_NM 등등 유저정보 가져올 수 있음
ex) this.ds_Master10.setColumn(this.ds_Master10.rowposition,"DL_NM", this.gfn_GetSessionValue("USEM_NM"));
** 중복 데이터 벨리데이션체크
ex) if (!this.gfn_VaildDupDataset(this.ds_Detail10, "EQ_CD, GONG_CD")) {return false;}
** tab 보내기
ex) this.div_DetailInput.form.tab_Detail.set_tabindex(0);
** 특정값이 포함된 조회값 가지고 오기
ex)
<if test=" SEAECH_TEXT != null and SEAECH_TEXT != '' ">
AND ( SY20.MT_NM LIKE CONCAT('%', #{SEAECH_TEXT}, '%') /* 공통그룹명 */
OR SY20.MT_CD LIKE CONCAT('%', #{SEAECH_TEXT}, '%') /* 공통그룹코드 */ )
</if>
** 콤보로 값을 선택했을 때 그 값에 따라 나오는 콤보 값 필터링
.filter
ex)
this.div_MasterInput_tab_Master_tpg_01_cbo_FiCd_onitemchanged = function(obj:nexacro.Combo,e:nexacro.ItemChangeEventInfo)
{
if (!this.gfn_IsNull(e.postvalue)) {
this.ds_Master10.setColumn(this.ds_Master10.rowposition,"JAL_CD","");
this.ds_Co3010.filter ("");
this.ds_Co3010.filter("FI_CD == '"+e.postvalue+ "'");
this.ds_Co3020.filter("");
this.ds_Co3020.filter("GDL_CD=='" + this.div_MasterInput.form.tab_Master.tpg_01.form.cbo_JalCd.value + "'");
this.ds_Co3030.filter("");
this.ds_Co3030.filter("GDL_CD=='" + this.div_MasterInput.form.tab_Master.tpg_01.form.cbo_JalCd.value + "' && GDM_CD == '" + this.div_MasterInput.form.tab_Master.tpg_01.form.cbo_JamCd.value + "'");
}
};
// Co3010 : 대분류
// Co3020 : 중분류
// Co3030 : 소분류
// e.postvalue : 새로 변경된 값
** 체크박스 체크된 ROW는 하나만 가능하게 만들기
this.fn_VaildDetailSave = function()
if( this.ds_Detail10.getCaseCount("DEFAULT_YN=='Y'") > "1" ){
alert("DEFAULT_YN 값은 한건만 가능")
return false
}
}
** 날짜의 - 값을 제거해서 크기 비교하기
시작일자가 종료일자보다 크지 않게 만들기 위해서 데이터셋에 oncolumnchanged 에 밸리데이션 로직을 만드는데
문제는 입력 할때는 20231101 이런식으로 들어가지만 실제 DB안에 2023-11-10 이런식으로 들어가 있어서 값을 비교할 수가 없다. 하여 sEndDt = sEndDt.replace("-",""); 이런식의 replace를 비용하여 -값을 제거 후 값을 비교하는 밸리데이션 기능을 만든다.
추가로 .replace(/-/gi,"") 이런식으로 쓰면 replace()를 여러번 쓰지 않아도 일괄 처리된다. javascript는 다른 언어와 달리 replaceAll() 함수를 지원하지 않는다. (최신버전(2021)은 지원)
this.ds_Detail10_oncolumnchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSColChangeEventInfo)
{
this.gfn_GridUpdateProcess(this, obj, e);//crudType 변경-수정(U)
if(e.columnid == "F_DT" || e.columnid == "T_DT"){
var sStartDt = this.ds_Detail10.getColumn(this.ds_Detail10.rowposition, "F_DT"); //시작일자
sStartDt = sStartDt.replace("-","");
sStartDt = sStartDt.replace("-","");
//sStartDt = sStartDt.replace(/-/gi,""); // - 일괄 제거
var sEndDt = this.ds_Detail10.getColumn(this.ds_Detail10.rowposition, "T_DT"); //종료일자
sEndDt = sEndDt.replace("-","");
sEndDt = sEndDt.replace("-","");
//sEndDt = sEndDt.replace(/-/gi,""); // - 일괄 제거
if ( sStartDt > sEndDt ) {
var arrMsgArg = ["시작일자","종료일자"];
this.gfn_Alert("SM056", arrMsgArg);//시작일자는 종료일자를 초과할 수 없습니다.
if (e.columnid == "F_DT") {
this.ds_Detail10.setColumn(this.ds_Detail10.rowposition,"F_DT","");
this.div_MasterInput.form.tab_Detail.tpg_01.form.grd_Detail10.setCellPos(12);
} else if (e.columnid == "T_DT") {
this.ds_Detail10.setColumn(this.ds_Detail10.rowposition,"T_DT","");
this.div_MasterInput.form.tab_Detail.tpg_01.form.grd_Detail10.setCellPos(13);
}
}
}
};
gfn 같은 경우에는 공통함수로 특별히 커스텀한 함수이기 때문에 회사마다 다름