기타 combo 박스 에러 문의
페이지 정보
작성자 질문 작성일 2021-05-11 14:22 조회 2,066회 댓글 2건본문
관련링크
안녕하세요.
콤보박스 관련하여 문의 드립니다.
아래 그림과 같이 [행추가] 버튼을 눌러 생성되는 행에 '성명'의 콤보박스를 선택하여 체크한 셀에 자동으로 값이 들어가도록 작성하고 싶습니다.
DB에서 데이터를 불러오는 부분 등은 정상적으로 작동되나, 다음과 같은 문제가 발생합니다.
[문제점]
1. 기존의 답변의 instanceof 부분 사용 불가
if ( args.sheet.getCellType(args.row, args.col) instanceof spreadNS.ComboBoxCellType ) |
2. 드롭박스 선택 후 [행추가] 불가
3. 드롭박스 선택 후 화면 무한 로딩(동작 멈춤)
[소스]
$('.excelbtnaddrow').click(function() { //행 추가 spread.suspendPaint(); var sheet = spread.getActiveSheet(); sheet.addRows(ROW_EP + 1, 1); ROW_EP++; sheet.setFormula(ROW_EP, COL_EP + 4, '=SUM(' + viewCommon.columnAlphabet(COL_SP) + (ROW_EP + 1) + ':' + viewCommon.columnAlphabet(COL_EP) + (ROW_EP + 1) + ')'); sheet.setFormula(ROW_EP + 1, COL_EP + 4, '=SUM(' + viewCommon.columnAlphabet(COL_EP + 4) + (ROW_SP + 1) + ':' + viewCommon.columnAlphabet(COL_EP + 4) + (ROW_EP + 1) + ')'); var rangeArr = [{ "rS" : ROW_EP, "cS" : COL_SP - 6, "rC" : 1, "cC" : (COL_EP - COL_SP + 7) }]; $.each(rangeArr, function(i, v) { sheet.getRange(v.rS, v.cS, v.rC, v.cC).locked(false); }) var sheetIndex = spread.getActiveSheetIndex();
/*콤보 박스 테스트*/
var cellType2 = new spreadNS.CellTypes.ComboBox();
let items = []; $.ajax({ type : "POST", async : false, url : URL + "selectworkertest.do", contentType : "application/json; charset=utf-8", dataType : "json", data : JSON.stringify(), success: function (data) { data.forEach((d) => { d.text = d.W_NAME; }); cellType2.items(data); viewCommon.consoleLog("combotest", "Success"); }, fail : function(data) { viewCommon.consoleLog("combotest", "Fail"); }, error : function(data) { viewCommon.consoleLog("combotest", "Error"); } });
spread.bind(spreadNS.Events.CellClick, function(e, args) { if(args.col == 8) { spread.bind(spreadNS.Events.CellChanged, function (e, args) { sheet.getCell(args.row, args.col - 1).backColor('red'); cellType2._items.forEach((item) => { if (item.E_NAME === args.newValue) {
sheet.setValue(args.row, 7, item.RATING); sheet.setValue(args.row, 4, item.DEPARTMENT); }
});
});
}
});
/*콤보 테스트 끝*/ for (var i = COL_SP - 8; i < COL_EP + 12; i++) {
sheet.getCell(ROW_EP,8).cellType(cellType2); //// 콤보 테스트
var originCell = sheet.getCell(ROW_EP - 1, i); var currentCell = sheet.getCell(ROW_EP, i);
currentCell.backColor("#faed7d"); currentCell.borderBottom(originCell.borderBottom()); currentCell.borderRight(originCell.borderRight()); currentCell.borderLeft(originCell.borderLeft()); var lockFlag = false; switch (sheetIndex) { case 0: lockFlag = true; SHEET_R.getCell(ROW_EP, i).locked(lockFlag); break; case 1: if (SHEET_E.getTag(ROW_EP + 3, i) == "CONFIRM") { lockFlag = true; } SHEET_E.getCell(ROW_EP, i).locked(lockFlag); break; } }
for (var i = COL_SP; i <= COL_EP; i++) { sheet.setFormula(ROW_EP + 1, i, '=SUM(' + viewCommon.columnAlphabet(i) + (ROW_SP + 1) + ':' + viewCommon.columnAlphabet(i) + (ROW_EP + 1) + ')'); } viewCommon.align(sheet, ROW_SP, COL_SP - 6, ROW_EP - ROW_SP + 1, COL_EP - COL_SP + 7, 'CENTER'); spread.resumePaint(); }) |
기존에 문의했던 내용을 첨부해드립니다.
어느 부분이 틀렸는지 답변 부탁드립니다.
combo 박스 query 활용법 (버전이 문제라면 업그레이드 시 이용법 문의드립니다) > Q&A | 토론 | 그레이프시티 개발자 포럼 (grapecity.co.kr)
감사합니다.