123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917 |
- var gJson = {Data: [[]]};
- /*
- * IBSheet를 생성(호출 위치에서 동적 생성)
- */
- function createIBSheet(sheetid, width, height, locale) {
- var div_str = "";
- if (!locale) locale = "";
- Grids.Locale = locale;
- div_str += "<div id='DIV_" + sheetid + "' style='width:" + width + ";height:" + height + ";'>";
- div_str += "<script> IBSheet('<ibsheet Sync=\"1\" Data_Sync=\"0\"> </ibsheet>',\"DIV_" + sheetid + "\", \"" + sheetid + "\"); </script>";
- div_str += "</div>\n";
- //<![CDATA[
- document.write(div_str);
- //]]>
- }
- /*
- * IBSheet를 생성 (특정 div 하위로 넣는 경우에 사용)
- */
- function createIBSheet2(obj, sheetid, width, height, locale) {
- // locale 처리
- Grids.Locale = locale ? locale : "";
- if (typeof obj === "string") {
- obj = document.getElementById(obj);
- }
- if (obj && typeof obj === "object") {
- // width, height 적용
- obj.style.width = width;
- obj.style.height = height;
- IBSheet('<ibsheet Sync=\"1\" Data_Sync=\"0\"> </ibsheet>', obj.id, sheetid);
- } else {
- throw "[createIBSheet2] IBSheet container is null.";
- }
- }
- /* MergeSheet 속성에 설정 값 */
- var msNone = 0, // 머지 없음
- msAll = 1, // 전부 머지 가능
- msPrevColumnMerge = 2, // 앞 컬럼이 머지 된 경우 해당 행 안에서 머지 가능
- msFixedMerge = 3, // 단위데이터행 구조에서의 고정 셀 병합 기능
- msBaseColumnMerge = 4, // 기준 컬럼 머지 영역 범위 내에서의 머지 기능
- msHeaderOnly = 5; // 해더만 머지
- /* BasicImeMode 속성 설정 값 */
- var imeAuto = 0; // 마지막 상태를 그대로 사용
- var imeHan = 1; // 기본 상태를 한글 입력 상태로 함
- var imeEng = 2; // 기본 상태를 영문 입력 상태로 함
- /* SizeMode 속성 설정 값 */
- var sizeAuto = 0; // 설정한 높이, 너비 그대로 사용
- var sizeNoVScroll = 1; // 높이를 스크롤 없이 자동 설정
- var sizeNoHScroll = 2; // 너비를 스크롤 없이 자동 설정
- var sizeNoBothScroll = 3; // 높이, 너비 모두 스크롤 없이 자동 설정
- var sizeAdvancedAuto = 4; //설정한 높이 이전까지 스크롤 없이 높이 자동 설정
- /* SearchMode 속성 설정 값 */
- var smGeneral = 0, // 일반 조회
- smClientPaging = 1, // 클라이언트 페이징 조회
- smLazyLoad = 2, // Lazy Load 조회
- smServerPaging = 3, // 실시간 서버 페이징 조회 (Scroll 방식)
- smServerPaging2 = 4; // 실시간 서버 페이징 조회 (Page Index 방식)
- /* SumPosition 속성 설정 값 */
- var posTop = 0; // 상단 고정 위치
- var posBottom = 1; // 하단 고정 위치
- /* VScrollMode 속성 설정 값 */
- var vsAuto = 0; // 자동 생성
- var vsFixed = 1; // 고정 생성
- /*
- FormQueryString 관련 함수 정의
- */
- /* FormQueryString과 FormQueryStringEnc함수에서 필수입력 체크시 메시지로 사용한다.-3.4.0.50 */
- var IBS_MSG_REQUIRED = "은(는) 필수입력 항목입니다.";
- /**
- * 에러메시지를 표시한다. IBS_ShowErrMsg 대신 이 함수를 사용해야 한다.
- * @param : sMsg - 메시지
- * @return : 없음
- * @version : 3.4.0.50
- * @sample
- * IBS_ShowErrMsg("에러가 발생했습니다.");
- */
- function IBS_ShowErrMsg(sMsg) {
- return alert("[IBSheetInfo.js]\n" + sMsg);
- }
- function IBS_getName(obj) {
- if (obj.name != "") {
- return obj.name;
- } else if (obj.id != "") {
- return obj.id;
- } else {
- return "";
- }
- }
- function IBS_RequiredChk(obj) {
- return (obj.getAttribute("required") != null);
- }
- /**
- * Form오브젝트 안에 있는 컨트롤을 QueryString으로 구성한다. 이때, 한글은 인코딩하지 않는다.
- * @param : form - 필수,html의 Form 오브젝트 Name
- * @param : checkRequired - 선택,필수입력 체크 여부(true,false)
- * @return : String - Form오브젝트 안에 Control을 QueryString으로 구성한 문자열
- * undefined - checkRequired인자가 true이고, 필수입력에 걸린경우 return 값
- * @version : 1.0.0.0,
- * 3.4.0.50(checkRequired 인자 추가)
- * @sample1
- * var sCondParam=FormQueryString(document.frmSearch); //결과:"txtname=이경희&rdoYn=1&sltMoney=원화";
- * @sample2
- * <input type="text" name="txtName" required="이름"> //필수 입력 항목이면 required="이름" 를 설정한다.
- * var sCondParam = FormQueryString(document.mainForm, true);//필수입력까지 체크하며, 필수입력에 걸리면 리턴값은 null
- * if (sCondParam==null) return;
- */
- function FormQueryString(form, checkRequired) {
- if (typeof form != "object" || form.tagName != "FORM") {
- IBS_ShowErrMsg("FormQueryString 함수의 인자는 FORM 태그가 아닙니다.");
- return "";
- }
- if (checkRequired == null) checkRequired = false;
- var name = new Array(form.elements.length);
- var value = new Array(form.elements.length);
- var j = 0;
- var plain_text = "";
- //사용가능한 컨트롤을 배열로 생성한다.
- len = form.elements.length;
- for (i = 0; i < len; i++) {
- var prev_j = j;
- switch (form.elements[i].type) {
- case undefined:
- case "button":
- case "reset":
- case "submit":
- break;
- case "radio":
- case "checkbox":
- if (form.elements[i].checked == true) {
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].value;
- j++;
- }
- break;
- case "select-one":
- name[j] = IBS_getName(form.elements[i]);
- var ind = form.elements[i].selectedIndex;
- if (ind >= 0) {
- value[j] = form.elements[i].options[ind].value;
- } else {
- value[j] = "";
- }
- j++;
- break;
- case "select-multiple":
- name[j] = IBS_getName(form.elements[i]);
- var llen = form.elements[i].length;
- var increased = 0;
- for (k = 0; k < llen; k++) {
- if (form.elements[i].options[k].selected) {
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].options[k].value;
- j++;
- increased++;
- }
- }
- if (increased > 0) {
- j--;
- } else {
- value[j] = "";
- }
- j++;
- break;
- default:
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].value;
- j++;
- }
- if (checkRequired) {
- //html 컨트롤 태그에 required속성을 설정하면 필수입력을 확인할 수 있다.
- //<input type="text" name="txtName" required="이름">
- if (IBS_RequiredChk(form.elements[i]) && prev_j != j && value[prev_j] == "") {
- if (form.elements[i].getAttribute("required") == null ||
- form.elements[i].getAttribute("required") == ""
- ) {
- alert('"' + IBS_getName(form.elements[i]) + '"' + IBS_MSG_REQUIRED);
- } else {
- alert('"' + form.elements[i].getAttribute("required") + '"' + IBS_MSG_REQUIRED);
- }
- //컨트롤이 숨겨져 있을수도 있으므로 에러 감싼다.
- try {
- form.elements[i].focus();
- } catch (ee) {;
- }
- return;
- }
- }
- }
- //QueryString을 조합한다.
- for (i = 0; i < j; i++) {
- if (name[i] != '') plain_text += name[i] + "=" + value[i] + "&";
- }
- //마지막에 &를 없애기 위함
- if (plain_text != "") plain_text = plain_text.substr(0, plain_text.length - 1);
- return plain_text;
- }
- /**
- * Form오브젝트 안에 있는 컨트롤을 QueryString으로 구성한다. 이때, 한글은 인코딩한다.
- * @param : form - 필수,html의 Form 오브젝트 Name
- * @param : Sheet - 필수,IBheet의 Object id
- * @param : checkRequired - 선택,필수입력 체크 여부(true,false)
- * @return : String - Form오브젝트 안에 Control을 QueryString으로 구성한 문자열
- * undefined - checkRequired인자가 true이고, 필수입력에 걸린경우 return 값
- * @version : 1.0.0.0,
- * 3.4.0.50(checkRequired 인자 추가)
- * @sample1
- * var sCondParam=FormQueryStringEnc(document.frmSearch, mySheet1);
- * 원본:"txtname=이경희&rdoYn=1&sltMoney=원화";
- * 결과:"txtname=%C0%CC%B0%E6%C8%F1&rdoYn=1&sltMoney=%BF%F8%C8%AD"; //UTF16인 경우
- * 결과:"txtname=%EC%9D%B4%EA%B2%BD%ED%9D%AC&rdoYn=1&sltMoney=%EC%9B%90%ED%99%94"; //UTF8인 경우
- * @sample2
- * <input type="text" name="txtName" required="이름"> //필수 입력 항목이면 required="이름" 를 설정한다.
- * var sCondParam = FormQueryStringEnc(document.mainForm, mySheet, true);//필수입력까지 체크하며, 필수입력에 걸리면 리턴값은 null
- * if (sCondParam==null) return;
- */
- function FormQueryStringEnc(form, checkRequired) {
- if (typeof form != "object" || form.tagName != "FORM") {
- IBS_ShowErrMsg("FormQueryStringEnc 함수의 form 인자는 FORM 태그가 아닙니다.");
- return "";
- }
- if (checkRequired == null) checkRequired = false;
- var name = new Array(form.elements.length);
- var value = new Array(form.elements.length);
- var j = 0;
- var plain_text = "";
- //사용가능한 컨트롤을 배열로 생성한다.
- len = form.elements.length;
- for (i = 0; i < len; i++) {
- var prev_j = j;
- switch (form.elements[i].type) {
- case "button":
- case "reset":
- case "submit":
- break;
- case "radio":
- case "checkbox":
- if (form.elements[i].checked == true) {
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].value;
- j++;
- }
- break;
- case "select-one":
- name[j] = IBS_getName(form.elements[i]);
- var ind = form.elements[i].selectedIndex;
- if (ind >= 0) {
- value[j] = form.elements[i].options[ind].value;
- } else {
- value[j] = "";
- }
- j++;
- break;
- case "select-multiple":
- name[j] = IBS_getName(form.elements[i]);
- var llen = form.elements[i].length;
- var increased = 0;
- for (k = 0; k < llen; k++) {
- if (form.elements[i].options[k].selected) {
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].options[k].value;
- j++;
- increased++;
- }
- }
- if (increased > 0) {
- j--;
- } else {
- value[j] = "";
- }
- j++;
- break;
- default:
- name[j] = IBS_getName(form.elements[i]);
- value[j] = form.elements[i].value;
- j++;
- }
- if (checkRequired) {
- //html 컨트롤 태그에 required속성을 설정하면 필수입력을 확인할 수 있다.
- //<input type="text" name="txtName" required="이름">
- if (IBS_RequiredChk(form.elements[i]) && prev_j != j && value[prev_j] == "") {
- if (form.elements[i].getAttribute("required") == "") {
- alert('"' + IBS_getName(form.elements[i]) + '"' + IBS_MSG_REQUIRED);
- } else {
- alert('"' + form.elements[i].getAttribute("required") + '"' + IBS_MSG_REQUIRED);
- }
- //컨트롤이 숨겨져 있을수도 있으므로 에러 감싼다.
- try {
- form.elements[i].focus();
- } catch (ee) {;
- }
- return;
- }
- }
- }
- //QueryString을 조합한다.
- for (i = 0; i < j; i++) {
- if (name[i] != '') plain_text += encodeURIComponent(name[i]) + "=" + encodeURIComponent(value[i]) + "&";
- }
- //마지막에 &를 없애기 위함
- if (plain_text != "") plain_text = plain_text.substr(0, plain_text.length - 1);
- return plain_text;
- }
- /*------------------------------------------------------------------------------
- * titile : IBSheet의 조회,저장시 사용되는 함수
- * paramList :
- * param1 : s_SAVENAME 객체를 담고 있는 form 객체
- * param2 : 조회해야 할 시트 객체
- * param3.. : 여러개 시트를 한번에 조회하는 경우 시트의 개수만큼 붙인다.
- -------------------------------------------------------------------------------*/
- function IBS_SaveName() {
- var param = arguments;
- if (param.length < 2) {
- IBS_ShowErrMsg("최하 두개의 인자가 필요합니다.");
- return;
- }
- if (param.length == 2) {
- param[0].s_SAVENAME.value = IBS_ConcatSaveName(param[1]);
- } else {
- param[0].s_SAVENAME.value = "";
- for (var i = 1; i < param.length; i++) {
- param[0].s_SAVENAME.value += IBS_ConcatSaveName(param[i]) + "@@";
- }
- var tempStr = param[0].s_SAVENAME.value;
- param[0].s_SAVENAME.value = tempStr.substring(0, tempStr.length - 2);
- }
- }
- function IBS_ConcatSaveName(sheet) {
- var lr = sheet.GetDataRows(),
- lc = sheet.LastCol(),
- res = [],
- r = 0,
- c = 0,
- cn = "",
- sn = "";
- for (r = 0; r < lr; r++) {
- for (c = 0; c <= lc; c++) {
- cn = sheet.GetColName(c);
- sn = sheet.ColSaveName(r, c);
- if (cn !== sn) {
- res.push(sn);
- }
- }
- }
-
- return res.join("|");
- }
- /*------------------------------------------------------------------------------
- * method : GetSaveJson
- * desc : 지정한 상태에 대한 데이터를 json 형태로 반환한다.
- * param list
- * param1 : IBSheet Object
- * param2 : 상태 (I|U|D)
- * param3 : SkipCol list
- -------------------------------------------------------------------------------*/
- function GetSaveJson2(sheet, status, skipcols) {
- if (sheet == null) {
- alert("GetSaveJson2 함수의 첫번째 인자는 ibsheet 객체여야 합니다.");
- return;
- }
- var skipcolsArr = null;
- if (skipcols != null) {
- skipcolsArr = skipcols.split("|");
- }
- var rtnJson = {};
- if (status == null) {
- var temp = GetJsonStatus(sheet, "I", skipcolsArr);
- if (temp) rtnJson["INSERT"] = temp;
- temp = GetJsonStatus(sheet, "D", skipcolsArr);
- if (temp) rtnJson["DELETE"] = temp;
- temp = GetJsonStatus(sheet, "U", skipcolsArr);
- if (temp) rtnJson["UPDATE"] = temp;
- } else {
- switch (status) {
- case "I":
- rtnJson["INSERT"] = GetJsonStatus(sheet, "I", skipcolsArr);
- break;
- case "U":
- rtnJson["UPDATE"] = GetJsonStatus(sheet, "U", skipcolsArr);
- break;
- case "D":
- rtnJson["DELETE"] = GetJsonStatus(sheet, "D", skipcolsArr);
- break;
- }
- GetJsonStatus(sheet, status);
- }
- return rtnJson;
- }
- function GetJsonStatus(sheet, status, skipcolsArr) {
- var rtnJson = new Array();
- //지정한 상태 값을 갖는 행을 뽑는다.
- var rows = sheet.FindStatusRow(status);
- if (rows == "") return null;
- var rowArr = rows.split(";");
- for (var i = 0; i < rowArr.length; i++) {
- var temp = sheet.GetRowJson(rowArr[i]);
- if (skipcolsArr != null) {
- for (var c = 0; c < skipcolsArr.length; c++) {
- delete temp[skipcolsArr[c]];
- }
- }
- rtnJson.push(temp);
- }
- return rtnJson;
- }
- /**
- IBSheet 초기화 작업을 일괄 처리 한다.
- @method IBS_InitSheet
- @public
- @param {object} sheet 대상 시트 객체
- @param {object} info 초기화 정보
- @param {object} info.Cols 컬럼 초기화 정보 객체
- @param {object} [info.Cfg] 시트 초기화 정보 객체
- @param {object} [info.Headers] 헤더 초기화 정보 객체
- @param {object} [info.HeaderMode] 헤더 모드 정보 객체
- */
- function IBS_InitSheet(sheet, info) {
- var cInfo = {},
- colsHeader = [],
- headerUnitPos = [],
- useColsHeader = 0,
- max = 0,
- cnt = 0,
- htmlHeader = [],
- dataRows = 1;
- function appendHeaderText(last, col, header, unitPos) {
- var unitHeader = header,
- i = 0,
- len = 0;
- if (!_ibsUtil.isArray(header)) {
- unitHeader = header.split("|");
- }
-
- useColsHeader = 1;
- len = unitHeader.length;
- if (cnt < len) {
- cnt = len;
- }
-
- if (typeof unitPos == "undefined") {
- unitPos = 0;
- }
- for (i = 0; i < len; i++) {
- if (typeof colsHeader[last + i] === "undefined") {
- colsHeader[last + i] = [];
- }
-
- if (typeof headerUnitPos[last + i] === "undefined") {
- headerUnitPos[last + i] = unitPos;
- }
- colsHeader[last + i][col] = unitHeader[i];
- }
- };
- // 필수 입력 요소 체크
- if (!sheet || !info || !info.Cols) {
- alert("시트 초기화 정보가 올바르지 않습니다.");
- return;
- }
- cInfo = CloneArray(info);
- // DataRows 설정
- if (cInfo.Cols[0] && typeof cInfo.Cols[0].length !== "undefined") {
- dataRows = cInfo.Cols.length;
- }
- // Cfg 기본값 설정
- if (!cInfo.Cfg) {
- cInfo.Cfg = {};
- }
- // Headers 기본값 설정
- if (!cInfo.Headers) {
- cInfo.Headers = [{
- Text: "",
- Align: "Center"
- }];
- }
- // HeaderMode 기본값 설정 및 Align 처리
- if (!cInfo.HeaderMode) {
- cInfo.HeaderMode = {};
- } else {
- if (cInfo.HeaderMode.Align) {
- var header = cInfo.Headers;
- for (var i = 0, len = header.length; i < len; i++) {
- header[i].Align = cInfo.HeaderMode.Align;
- }
- }
- }
- for (var i = 0, len = cInfo.Cols.length; i < len; i++) {
- var col = cInfo.Cols[i];
- if (typeof col.Header === "undefined") {
- for (var j = 0, len2 = col.length; j < len2; j++) {
- var col2 = col[j];
- if (typeof col2.Header !== "undefined") {
- appendHeaderText(max, j, col2.Header, i);
- delete col2.Header;
- }
- }
- max += cnt;
- cnt = 0;
- } else {
- appendHeaderText(0, i, col.Header, 0);
- delete col.Header;
- }
- if (col.HeaderHtml) {
- var ht = col.HeaderHtml;
- if (!_ibsUtil.isArray(ht)) {
- ht = [ht];
- }
- var hh = {
- Col: i,
- Html: ht
- };
- htmlHeader.push(hh);
- }
- }
- if (useColsHeader) {
- cInfo.Headers = [];
- for (var i = 0, len = colsHeader.length; i < len; i++) {
- var header = {};
- if (typeof colsHeader[i] === "undefined") {
- header.Text = "";
- } else {
- header.Text = colsHeader[i].join("|");
- }
- header.Align = cInfo.HeaderMode.Align || "Center";
- cInfo.Headers.push(header);
- }
- }
- sheet.SetUnicodeByte(3);
- sheet.SetCountPosition(4);
- sheet.SetConfig(cInfo.Cfg);
- sheet.InitHeaders(cInfo.Headers, cInfo.HeaderMode);
- sheet.InitColumns(cInfo.Cols, dataRows);
- sheet.SetTheme('LGY2', 'LightGray2');
- if (typeof sheet.InitHeadersUnitPos !="undefined") {
- sheet.InitHeadersUnitPos(headerUnitPos);
- }
- //HeaderHtml
- for (var i = 0, len = htmlHeader.length; i < len; i++) {
- var ht = htmlHeader[i];
- for (var j = 0, len2 = ht.Html.length; j < len2; j++) {
- if (ht.Html[j] && ht.Html[j] !== "") {
- sheet.SetHtmlHeaderValue(j, ht.Col, ht.Html[j]);
- }
- }
- }
- }
- /*------------------------------------------------------------------------------
- * method : IBS_CopyJson2Form
- * desc : json 데이터를 이름을 기준으로 폼객체에 넣는다.
- * param list
- * param1 : json 객체
- * param2 : 대상 폼 name
- json 자료 구조 :
- {"폼객체명":{"객체명":"값","객체명2":"값2"}}
- ex){"aFrm":{"sa_no":"12345","sa_name":"손이창","grade":"a3","married":"NO","enter_date":"2012-12-31"}}
- -------------------------------------------------------------------------------*/
- function IBS_CopyJson2Form(jsonobj, frmName) {
- var json,
- obj,
- stype,
- idx,
- max;
- if (typeof frmName == "object") {
- frmName = frmName.name;
- }
- json = jsonobj[frmName];
- for (j in json) {
- obj = null;
- try {
- obj = document[frmName][j];
- if (obj == null || typeof obj == "undefined") {
- obj = document.getElementById(j);
- }
- if (obj == null || typeof obj == "undefined") {
- continue;
- }
- } catch (e) {
- //alert(e.message);
- }
- stype = (obj.type);
- if (typeof stype == "undefined" && obj.length > 0) {
- stype = obj[0].type;
- }
- switch (stype) {
- case undefined:
- case "button":
- case "reset":
- case "submit":
- break;
- case "select-one":
- obj.value = json[j];
- break;
- case "radio":
- obj.checked = json[j];
- break;
- case "checkbox":
- obj.checked = json[j];
- break;
- default:
- obj.value = json[j];
- break;
- } //end of switch
- }
- }
- /*------------------------------------------------------------------------------
- method : IBS_CopyForm2Sheet()
- desc : Form객체에 있는 내용을 시트에 복사
- param list
- param : json 유형
- param 내부 설정값
- sheet : 값을 입력 받을 ibsheet 객체 (필수)
- form : copy할 폼객체 (필수)
- row : ibsheet 객체의 행 (default : 현재 선택된 행)
- sheetPreFiex : 맵핑할 시트의 SavaName 앞에 PreFix 문자 (default : "")
- formPreFiex : 맵핑할 폼객체의 이름 혹은 id 앞에 PreFix 문자 (default : "")
- useOnChange : 시트값 변경시 OnChange 이벤트 사용 유무 (default : false)
- -------------------------------------------------------------------------------*/
- function IBS_CopyForm2Sheet(param) {
- var sheetobj,
- formobj,
- row,
- sheetPreFix,
- frmPreFix,
- uoc,
- col,
- max,
- colSaveName,
- baseSaveName,
- frmchild,
- sType,
- sValue;
- if ((!param.sheet) || (!param.sheet.IBSheetVersion)) {
- IBS_ShowErrMsg("IBS_CopyForm2Sheet 함수의 sheet 인자가 없거나 ibsheet객체가 아닙니다.");
- return false;
- }
- if (param.form == null || typeof param.form != "object" || param.form.tagName != "FORM") {
- IBS_ShowErrMsg("IBS_CopyForm2Sheet 함수의 form 인자가 없거나 FORM 객체가 아닙니다.");
- return false;
- }
- sheetobj = param.sheet;
- formobj = param.form;
- row = param.row == null ? sheetobj.GetSelectRow() : param.row;
- sheetPreFix = param.sheetPreFix == null ? "" : param.sheetPreFix;
- frmPreFix = param.formPreFix == null ? "" : param.formPreFix;
- uoc = param.useOnChange == null ? 0 : param.useOnChange;
- if (row < 0) {
- alert("선택된 행이 존재하지 않습니다.");
- return;
- }
- //Sheet의 컬럼개수만큼 찾아서 HTML의 Form 각 Control에 값을 설정한다.
- //컬럼개수만큼 루프 실행
- for (col = 0, max = sheetobj.LastCol(); col <= max; col++) {
- //컬럼의 별명을 문자열로 가져온다.
- colSaveName = sheetobj.ColSaveName(col);
- if (colSaveName == "") {
- continue;
- }
- //PreFix가 붙지 않은 형태의 SaveName을 가져온다.
- baseSaveName = colSaveName.substring(sheetPreFix.length);
- frmchild = null;
- try {
- //폼에 있는 해당 이름의 컨트롤을 가져온다.예)"frm_CardNo"
- frmchild = formobj[frmPreFix + baseSaveName];
- } catch (e) {
- alert(e);
- }
- //폼에 해당하는 이름의 컨트롤이 없는 경우는 계속 진행한다.
- if (frmchild == null) continue;
- sType = frmchild.type;
- sValue = "";
- //radio의 경우 frmchild가 배열형태가 되므로, frmchild.type으로는 타입을 알수 없다.
- if (typeof sType == "undefined" && frmchild.length > 0) {
- sType = frmchild[0].type;
- }
- //타입별로 값을 설정한다.
- switch (sType) {
- case undefined:
- case "button":
- case "reset":
- case "submit":
- break;
- case "radio":
- for (idx = 0; idx < frmchild.length; idx++) {
- if (frmchild[idx].checked) {
- sValue = frmchild[idx].value;
- break;
- }
- }
- break;
- case "checkbox":
- sValue = (frmchild.checked) ? 1 : 0;
- break;
- default:
- sValue = frmchild.value;
- } //end of switch
- sheetobj.SetCellValue(row, sheetPreFix + baseSaveName, sValue, uoc);
- } //end of for(col)
- //정상적인 처리완료
- return true;
- }
- /*----------------------------------------------------------------------------
- method : IBS_CopySheet2Form()
- desc : 시트의 한 행을 폼객체에 복사
- param list
- param : json 유형
- param 내부 설정값
- sheet : 값을 입력 받을 ibsheet 객체 (필수)
- form : copy할 폼객체 (필수)
- row : ibsheet 객체의 행 (default : 현재 선택된 행)
- sheetPreFiex : 맵핑할 시트의 SavaName 앞에 PreFix 문자 (default : "")
- formPreFiex : 맵핑할 폼객체의 이름 혹은 id 앞에 PreFix 문자 (default : "")
- -----------------------------------------------------------------------------*/
- function IBS_CopySheet2Form(param) {
- var sheetobj,
- formobj,
- row,
- sheetPreFix,
- frmPreFix,
- col,
- max,
- rmax,
- colSaveName,
- baseSaveName,
- sheetvalue,
- frmchild,
- sType,
- sValue;
- if ((!param.sheet) || (!param.sheet.IBSheetVersion)) {
- IBS_ShowErrMsg("IBS_CopyForm2Sheet 함수의 sheet 인자가 없거나 ibsheet객체가 아닙니다.");
- return false;
- }
- if (param.form == null || typeof param.form != "object" || param.form.tagName != "FORM") {
- IBS_ShowErrMsg("IBS_CopyForm2Sheet 함수의 form 인자가 없거나 FORM 객체가 아닙니다.");
- return false;
- }
- sheetobj = param.sheet;
- formobj = param.form;
- row = param.row == null ? sheetobj.GetSelectRow() : param.row;
- sheetPreFix = param.sheetPreFix == null ? "" : param.sheetPreFix;
- frmPreFix = param.formPreFix == null ? "" : param.formPreFix;
- if (row < 0) {
- alert("선택된 행이 존재하지 않습니다.");
- return;
- }
- //Sheet의 컬럼개수만큼 찾아서 HTML의 Form 각 Control에 값을 설정한다.
- //컬럼개수만큼 루프 실행
- for (col = 0, max = sheetobj.LastCol(); col <= max; col++) {
- //컬럼의 별명을 문자열로 가져온다.
- colSaveName = sheetobj.ColSaveName(col)
- if (colSaveName == "") {
- continue;
- }
- //PreFix가 붙지 않은 형태의 SaveName을 가져온다.
- baseSaveName = colSaveName.substring(sheetPreFix.length);
- sheetvalue = sheetobj.GetCellText(row, sheetPreFix + baseSaveName);
- frmchild = null;
- try {
- //폼에 있는 해당 이름의 컨트롤을 가져온다.예)"frm_CardNo"
- frmchild = formobj[frmPreFix + baseSaveName];
- } catch (e) {
- }
- //폼에 해당하는 이름의 컨트롤이 없는 경우는 계속 진행한다.
- if (frmchild == null) {
- continue;
- }
- sType = frmchild.type;
- sValue = "";
- //radio의 경우 frmchild가 배열형태가 되므로, frmchild.type으로는 타입을 알수 없다.
- if (typeof sType == "undefined" && frmchild.length > 0) {
- sType = frmchild[0].type;
- }
- //타입별로 값을 설정한다.
- switch (sType) {
- case undefined:
- case "button":
- case "reset":
- case "submit":
- break;
- case "select-one":
- frmchild.value = sheetobj.GetCellValue(row, sheetPreFix + baseSaveName);
- break;
- case "radio":
- for (idx = 0, rmax = frmchild.length; idx < rmax; idx++) {
- if (frmchild[idx].value == sheetvalue) {
- frmchild[idx].checked = true;
- break;
- }
- }
- break;
- case "checkbox":
- frmchild.checked = (sheetobj.GetCellValue(row, sheetPreFix + baseSaveName) == 1);
- break;
- default:
- frmchild.value = sheetvalue;
- break;
- } //end of switch
- } //end of for(col)
- //정상적인 처리완료
- return true;
- }
|