넥사크로13 - 다른 화면 호출

송용준·2025년 4월 9일

회사에서 운영중인 코드는 아니고
이렇게 바꾸면 어떨까 해서 수정해봄

화면 구현은 다른 화면들과 별반 다르지 않으므로 생략

기능

일정등록 화면에서 일정등록시 메인 페이지의 일정관리 달력이 업데이트 되는 기능

코드

- 일정등록 화면
	case "SAVE":   //저장		
			this.fn_ComBtnSearch();//조회

			//일정등록 저장시 메인포탈 새로고침 및 포커스
			this.gfn_CallScrn("Form_Portal","fn_mainPotal_refresh",null,"",false);
			break;	

공통함수로 넘기는 파라미터 :
(호출할 화면,화면에서 동작시킬 함수,같이 넘길 데이터,메뉴 닫을시 이동시킬 화면)

저장했을때 메인화면을 새로고침 한다.

공통함수를 살펴보자 !

- Bizutil.js
pForm.gfn_CallScrn = function(sPrgmId, sCallFunc, oParam, sMoveScrnId)
{
	var sMenuId = nApp.gds_Menu.lookup("PRGM_ID", sPrgmId, "MENU_ID");//메뉴ID
	var winId = nApp.gds_OpenMenu.lookup("MENU_ID", sMenuId, "WIN_ID");
	var oObj = {
			menuId : sMenuId,  // 메뉴ID
			scrnCallFunc : sCallFunc, //화면간 호출함수명
			scrnCallArgs  : oParam        //화면간 전달 argument
		};	
		
	//선택된 메뉴 호출
	this.gfn_CallMenu(oObj);		
	
	//Tab 메뉴 닫을시 이동할 화면 설정
	if (!this.gfn_IsNull(sMoveScrnId)) {
		this.gfn_MoveScrn(sMoveScrnId);
	}

	if (!this.gfn_IsNull(winId) && !this.gfn_IsNull(sCallFunc) ) {

		var framesInfo = nApp.gvWorkFrame.frames; //WorkFrame 정보
		var oCallScrn = framesInfo[winId];	
		oCallScrn.form.div_Work.form.lookupFunc(sCallFunc).call(oParam);//함수 호출	
	}

}

특이했던 점은 유사배열을 썻다는 건데
framesInfo[winId]
이건 index가 아닌 객체명으로 값에 접근할수 있다는 거였다.

lookupFunc는 넥사 내장함수로 함수 호출하는거고
oCallScrn.form.div_Work.form.lookupFunc(sCallFunc) 로 함수 호출 후
oParam 값을 넘겨 쓸수도 있다.

- 메인
//일정등록 저장시 메인포탈 일정관리 새로고침
this.fn_mainPotal_refresh = function()
{
	//this.gfn_Alert("SY134");	//저장되었습니다.
	
	//일정관리 일정 새로고침
	var fvDiv = this.tab_Portal.tpg_01.form.div_TopLeft.form;	
	var sDay = fvDiv.ds_Input.getColumn(0, "S_DAY");	
	fvDiv.fvReSeaarch = true;//재조회 여부

	fvDiv.fn_ComBtnSearch();				//달력 새로고침
	fvDiv.fn_SelectSchedule(sDay);		//일정 새로고침
};

fvDiv는 화면안에 화면으로 구성되어 있다.
fn_SelectSchedule는 모든 화면에 있는 조회하는 함수다.
경로가 잘 맞는지 잘 확인 해야한다. 보통 경로에서 오류 나드라

profile
용용

0개의 댓글