var gJson = {Data: [[]]};
/*
* IBSheet를 생성(호출 위치에서 동적 생성)
*/
function createIBSheet(sheetid, width, height, locale) {
var div_str = "";
if (!locale) locale = "";
Grids.Locale = locale;
div_str += "
";
div_str += "";
div_str += "
\n";
//
}
/*
* 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(' ', 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
* //필수 입력 항목이면 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속성을 설정하면 필수입력을 확인할 수 있다.
//
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
* //필수 입력 항목이면 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속성을 설정하면 필수입력을 확인할 수 있다.
//
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;
}