처음에는 dsSelData 데이터셋을 만들어서 , 팝업 화면에서 선택한 값을 데이터셋에 담아 object 로 반환하여 전달하도록 구현하려고 했다.
그러나 넥사크로 고객센터에 문의했는데 그게 불가능하다고 한다. 어쩐지 ㅜㅜ 3일동안 삽질했는데 하 .. 허무하다 ... 팝업에서 문제인 줄 알았지 설마 그냥 오브젝트 반환이 안될줄은 몰랐지 ... 그런데 내가 원하는 답이 나오는 질문을 준비하기까지 3일이 걸린거라 생각하자 ..
this.close();
팝업창에서 부모창으로 값을 리턴할 때는
기본형(Primitive Type) 데이터형(int, floa, string)만 지정 가능합니다.
부모창에서 팝업을 여는 함수를 작성한다. 이부분은 다양한 방법이 있으므로 자세한 설명은 생략하겠다.
this.Button00_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
//showmodal
this.lfn_Dialog("frmpop01", "DEV::PARENT_FORM.xfdl", "123", 0, 0, 200, 200, true, "f_pop_callback");
};
저 함수를 실행함으로써 부모화면 -> 자식화면으로 넘어갔다.
자식 화면에서 저장 시 다음의 함수를 실행한다. 원하는 코드를 구현하고, 데이터셋에 담는다. 그 후 OPENER 함수를 이용해 부모화면의 함수를 호출한다.
this.btn_PdvConfirm_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo)
{
// 구현부 생략
this.opener.fn_copySEL_TEST(자식 데이터셋); //부모화면.부모화면함수
this.close();
};
부모화면의 fn_copySEL_TEST 함수이다. 여기서 데이터 copyData를 사용해 부모화면으로 넘겨야하는 데이터를 copy 해준다. 이 copy 함수가 종료되면 팝업 화면이 종료된다.
this.fn_copySEL_TEST = function(nDs)
{
this.부모화면에서 사용할 데이터셋.copyData(nDs);
}
팝업이 종료된 후 실행되길 원하는 함수는 팝업 여는 함수에서 호출한 f_pop_callback 에 구현하면 된다. onbeforeclose 함수를 사용하는 방법도 있다는데, 나는 이렇게 함수를 전달하는데 성공했다~!
추가적으로, 위와 같은 방법으로 데이터셋을 복사하면 RowType 이 자동으로 변하지 않는다. 때문에 해당 내용을 팝업 callback 함수에서 수동으로 변환해줘야 한다.
// rowtype 변환
for(i = 0 ; i < this.부모화면데이터셋.rowcount ; i++){
this.부모화면데이터셋.set_updatecontrol(false);
this.부모화면데이터셋.setRowType(i, "I");
this.부모화면데이터셋.set_updatecontrol(true);
}