Sheet을 javascript로 생성하자
function f_init_answer(ans, data){ if( ans == undefined ) ans = new Map(); if( ans.has(data.opq_qust_item_id) ){ } else { data["myOrder"] = ans.size; ans.set( data.opq_qust_item_id, data ); } } function f_add_answer(ans, data){ if( ans == undefined ) alert("f_add_answer:error:ans가없습니다."); if( ans.has(data.opq_qust_item_id) ){ let obj = ans.get(data.opq_qust_item_id); if( data.opq_ansr_item_id > 0 ) { if( obj["col_" + data.opq_ansr_item_id] == undefined ) obj["col_" + data.opq_ansr_item_id] = 0; obj["col_" + data.opq_ansr_item_id] += Number(data.opq_cnt); } if( obj["qust_cnt"] == undefined ) obj["qust_cnt"] = 0; obj["qust_cnt"] += Number(data.qust_cnt); } else { // console.log("opq_qust_item_id가없습니다." + data.opq_qust_item_id); // 없으면 주관식인가? } } function myMakeSheet(){ let answerCol = new Map(); // 설문답변 let mAnswer = new Map(); // 설문문항 for(let i=0; i < bindingObject["ME_OPQ0009_03"].length; i++){ let data = bindingObject["ME_OPQ0009_03"][i]; answerCol.set(data.opq_ansr_item_id, data); f_init_answer(mAnswer, data); // 설문문항준비 }; var tmpHeaderRow1 = '번호|상태|삭제|문항|응답자'; /** BodyRow 기본 컬럼 **/ var bodyRow = [{Type:"Seq", Width:40, SaveName:"_seq", Align:"Right"}, {Type:"Status", Width:60, SaveName:"sStatus", Align:"Center", Hidden:true}, {Type:"DelCheck", Width:40, SaveName:"sDelete", Align:"Center", Hidden:true}, {Type:"Text",SaveName:"qust_type_nm", Width:300, Align:"Left"}, {Type:"Text",SaveName:"qust_cnt", Width:100, Align:"Center", Hidden:true} ]; //for (const [key, value] of answerCol.entries()) { // IE에서 작동안함 answerCol.forEach(function(value){ tmpHeaderRow1 += "|" + value.ansr_item_nm; bodyRow.push({Type:"Text",SaveName:"col_" + value.opq_ansr_item_id, Width:100, Align:"Center"}); } //var sheet = mySheet3; // 이렇게하면 안됨... 이유는 모름. var headers = [{ Text:tmpHeaderRow1, Align:"center"}]; var info = { Sort:0,ColMove:0,ColResize:1,HeaderCheck:0 }; mySheet3.Reset(); mySheet3.SetConfig({SearchMode:1,Page:100,FrozenCol:4,MergeSheet:msHeaderOnly}); mySheet3.InitHeaders( headers, info ); mySheet3.InitColumns( bodyRow ); //console.log(bodyRow); // 답변결과를 넣어주자. bindingObject['ME_OPQ0009_05'].forEach(function(data){ f_add_answer(mAnswer, data); }); //console.log(mAnswer); var myData = []; // myData준비하자 //for (const [key, value] of mAnswer.entries()) { // IE에서 작동안함 mAnswer.forEach(function(value){ myData[value.myOrder] = value; } // myData준비완료 //console.log(myData); $('div[dataProvider="ME_OPQ0009_05"]').triggerHandler("bindData", [ myData ]); }
<script type="text/javascript"> $( document ).ready( function(){ }); function mySheet1_OnSmartResize(Width, Height) { //변경된 정보에 따라 컬럼들의 너비를 재조정한다. mySheet1.FitColWidth(); } //동적 LIST 생성 , list <- IBSheet ID var lastCol; var orgTreeCols; function listReset(){ var requestObject = { "HEADER" : headerObject, "BODY" : { "ME_PEB0202_01" : [ { "company_cd" : "${sessionScope.session_company_cd}", "locale_cd" : "${sessionScope.session_locale_cd}", "type_nm" : '인건비' } ] } }; execute( "getPayItem", "PEB0202_00_H01", requestObject, function( actionType, obj ) { var data = obj[ "ME_PEB0202_02" ]; var cnt = data.length; var colInfo = []; var headerInfo = ""; var headerInfo2 = ""; lastCol = (lastCol == undefined) ? mySheet1.LastCol() : lastCol; for(var j = 0; j <= lastCol; j++){ headerInfo += mySheet1.GetCellText(0,j) + "|"; headerInfo2 += mySheet1.GetCellText(0,j) + "|"; colInfo[j] = { Type: mySheet1.GetCellProperty(0, j, "Type"), Width: mySheet1.GetCellProperty(0, j, "Width"), SaveName: mySheet1.GetCellProperty(0, j, "SaveName"), Align: mySheet1.GetCellProperty(0, j, "Align"), Edit: mySheet1.GetCellProperty(0, j, "Edit"), Hidden: mySheet1.GetCellProperty(0, j, "Hidden"), MultiLineText:0, Wrap:0, TreeCol: mySheet1.GetCellProperty(0, j, "TreeCol"), KeyField:0, ColMerge:0 }; } var dynamicColInfo = []; orgTreeCols = []; for(var i = 0 ; i < cnt; i++){ orgTreeCols.push(data[i]['cd']); headerInfo += data[i]['cd_nm'] + "|" ; headerInfo2 += data[i]['print_nm'] + "|"; dynamicColInfo[i] = {Type:"Int",Width:70, SaveName:data[i]['cd'] , Align:"right", Edit:0,MultiLineText:0, Wrap:0,Format:"Integer", TreeCol:0,KeyField:0,ColMerge:1,Hidden:0,InsertEdit:0,UpdateEdit:0}; } headerInfo = headerInfo.substring(0,headerInfo.length-1); headerInfo2 = headerInfo2.substring(0,headerInfo2.length-1); var headers = [{ Text: headerInfo, Align:"center"} ,{ Text: headerInfo2, Align:"center"} ]; var info = { Sort:0,ColMove:1,ColResize:1,HeaderCheck:0 }; var cols = "["; cols += JSON.stringify( colInfo ).replace("[", "").replace("]", ""); if(dynamicColInfo.length > 0){ cols += ", " + JSON.stringify( dynamicColInfo ).replace("[", "").replace("]", ""); } cols += "]"; //alert(JSON.stringify(cols)); cols = JSON.parse( cols ); //STRING을 JSON으로 변환한다 mySheet1.Reset(); // 2018.08.24 (LMY) 테마 적용 var theme = "${sessionScope.session_theme}".replace('ui-', ''); if( theme != null || theme != '' || theme != undefined ) mySheet1.SetTheme(theme, theme); else mySheet1.SetTheme('base', 'base'); mySheet1.SetConfig({SearchMode:2,Page:30,FrozenCol:6,MergeSheet:msHeaderOnly}); mySheet1.InitHeaders( headers, info ); mySheet1.InitColumns( cols ); mySheet1.SetDataRowHeight(35); //mySheet1.SetSumValue(4, "합계"); var colslength = dynamicColInfo.length +lastCol; var scols = lastCol + 1; mySheet1.SetEditable(0); //doAction('retrieve'); }, function(actionType, obj) { alert("ERROR getPayItem"); }, false); } </script>