From a6cc44ed8acae8b6961f9d92b07d9b26050098a8 Mon Sep 17 00:00:00 2001 From: hylee Date: Wed, 4 Sep 2024 18:46:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A3=BC=EC=86=8C=EB=A1=9D=20=EC=9C=A0?= =?UTF-8?q?=ED=9A=A8=EC=84=B1/=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=82=AC=20?= =?UTF-8?q?=EC=84=B1=EB=8A=A5=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/addr/include/addrListforClipboard.jsp | 212 +++++------------- .../jsp/web/addr/include/addrListforExcel.jsp | 57 +++-- .../jsp/web/addr/include/addrListforSelf.jsp | 24 +- .../jsp/web/addrBlock/AddrBlockList.jsp | 1 + .../jsp/web/msgcampain/MsgDataSMLView.jsp | 1 + .../msgcampain/excel/MsgExcelDataSMLView.jsp | 1 + .../jsp/web/msgdata/MsgDataSMLView.jsp | 1 + .../web/msgdata/excel/MsgExcelDataSMLView.jsp | 1 + src/main/webapp/js/web/addr/event.js | 82 ++++--- src/main/webapp/js/web/addr/init.js | 66 +----- 10 files changed, 146 insertions(+), 300 deletions(-) diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp index 737f9552..83c6a7e4 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforClipboard.jsp @@ -159,65 +159,7 @@ function linkPage(pageNo){ $(document).ready(function(){ //Tabulator AJAX Data Loading - //받는사람 전체삭제 버튼 처리 - $('.all_del').click(function(){ - var data = $tableClip.getRows(); - if(data == null || data == ""){ - alert("받는사람을 추가해 주세요."); - return false; - }else{ - $tableClip.clearData(); - $("#rowTotCnt").text(0); //총건수 수정 - $("#rowDupCnt").text(0); //중복건수 수정 - dupliPhoneDataRealList.length = 0; // 중복 휴대폰번호 초기화 - } - - }); - -// 받는사람 오류번호 삭제 처리해주기 - $('.chkVali_del').click(function(){ - //기존 연락처 모두 불러오기 - var data = $tableClip.getRows(); - var tableData = []; - var totLen = $tableClip.getRows().length; - var errCnt = 0; - - if(totLen > 0){ - if(confirm("올바르지 않은 연락처 정보를 삭제 하시겠습니까?")){ - for(var i=0; i < totLen; i++){ - - - var phone = data[i].getData().phone; - var valiCheck = checkHpNum(phone); - if(valiCheck){ - tableData.push({name: data[i].getData().name.trim(), phone: data[i].getData().phone.trim(), info1:data[i].getData().info1, info2:data[i].getData().info2, info3:data[i].getData().info3, info4:data[i].getData().info4, memo:data[i].getData().memo}); - }else{ - errCnt++; - } - } - - var removeDuplData = dupliPhoneData(tableData); - - $tableClip.setData(removeDuplData); - - //총 받는사람 수 계산 - totRows = $tableClip.getRows().length; - console.log('totRows : ', totRows); - updateTotCnt(totRows); - - if(errCnt > 0){ - alert(errCnt + " 건의 연락처를 삭제하였습니다."); - return false; - }else{ - alert("오류가 있는 연락처가 없습니다."); - } - } - }else{ - alert("연락처 정보를 입력해 주세요."); - return false; - } - }); //전체 데이터 갯수 구하는 함수 function updateTotCnt(data){ @@ -338,27 +280,6 @@ $(document).ready(function(){ }); - - //받는사람 중복 삭제 - $('.duple_del').click(function(){ - //기존 연락처 모두 불러오기 - var data = $tableClip.getRows(); - var tableData = []; - var dpCnt = 0; - var totLen = $tableClip.getRows().length; - - for(var i=0; i < totLen; i++){ - tableData.push({name: data[i].getData().name.trim(), phone: data[i].getData().phone.trim()}); - } - - var removeDuplData = dupliPhoneData(tableData); - $tableClip.setData(removeDuplData); - - //총 받는사람 수 계산 - totRows = $tableClip.getRows().length; - updateTotCnt(totRows); - }); - @@ -367,67 +288,43 @@ $(document).ready(function(){ //받는 사람 리스트 영역에 클립보드 데이터 가져와보기 // 붙여넣기 기능 - $('#tabulator_clip').on('paste', function (e) { - var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 + $('#tabulator_clip').off('paste').on('paste', function (e) { + var element = e.originalEvent.clipboardData.getData('text'); var elmSplit = element.split("\n"); - var elmLen = elmSplit.length; - console.log('elmSplit : ', elmSplit); - - if(elmLen < 0){ - alert("붙여넣을 연락처를 복사해주세요."); - return false; - } - if (elmLen > 20001) { - alert("2만줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."); - return false; - } - - tableErrorData.length = 0; // 오류 번호 배열 초기화 - var realPhone = []; - for(var i = 0; i < elmLen; i++){ - var splitStr = elmSplit[i]; - var tabData = splitStr.split("\t"); // 탭 구분으로 데이터 분할 - var comData = splitStr.split(","); // 콤마 구분으로 데이터 분할 - var splitData = (tabData.length >= 2) ? tabData : comData; + for (var i = 0; i < elmSplit.length; i++) { + var splitStr = elmSplit[i].trim(); + if (splitStr === "") continue; // 공백 행 무시 - if(splitData.length == 0){ // 데이터가 없는 경우 - alert("탭으로 구분하여 데이터를 복사해 주세요."); + var tabData = splitStr.split("\t"); + var comData = splitStr.split(","); + + var splitData = (tabData.length > 1) ? tabData : comData; + + if (splitData.length === 0) { + alert("탭 또는 콤마로 구분하여 데이터를 복사해 주세요."); return false; } - if(splitData.length == 1){ - realPhone.push({ A: splitData[0].trim() }); - } else { - let keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; - let data = {}; - splitData.forEach((item, index) => { - data[keys[index]] = item.trim(); - }); - realPhone.push(data); - } + let keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; + let data = {}; + splitData.forEach((item, index) => { + data[keys[index]] = item.trim() || ""; // 빈 문자열로 기본값 설정 + }); + realPhone.push(data); } - console.log('realPhone : ', realPhone); - var recTableData = $tableClip.getRows().map(row => createDataObject(row.getData())); - console.log('recTableData : ', recTableData); - var tableData = recTableData.concat(realPhone); - - // 중복 연락처 제거 작업 (필요에 따라 적용) - // var removeDuplPhone = dupliPhoneData(tableData); - var removeDuplPhone = tableData; // 현재 중복 제거하지 않음 - - // 기존 데이터를 유지하고 새 데이터를 추가한 결과를 테이블에 반영 - $tableClip.setData(removeDuplPhone); - - var totRows = $tableClip.getRows().length; - updateTotCnt(totRows); // 전체 데이터 갯수 구하기 - - if (tableErrorData.length > 0) { - alert("데이터를 확인해 주세요."); - } + console.log('Parsed data:', realPhone); + console.log('Tabulator data before getData:', $tableClip.getData()); +// $tableClip.clearData(); + $tableClip.setData(realPhone); + var totRows = $tableClip.getDataCount(); + updateTotCnt(totRows); + console.log('Tabulator data after getData:', $tableClip.getData()); }); + + @@ -539,14 +436,11 @@ function GetAddrMassDupli() {

- 총 0건 / 중복 0건 - - - - - + 총 0건 + / 중복 0건 + / 오류 0건 +

-
@@ -555,9 +449,9 @@ function GetAddrMassDupli() {
-
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp index a2982350..c3c85eb2 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforExcel.jsp @@ -355,7 +355,7 @@ function processExcelData(data) { data.forEach((row, index) => { var rowData = {}; keys.forEach((key, idx) => { // index 변수명 변경 (내부와 외부에서 사용되므로 충돌 방지) - console.log('row[idx] : ', row[idx]); +// console.log('row[idx] : ', row[idx]); rowData[key] = typeof row[idx] === 'string' ? row[idx].trim() : row[idx]; // 문자열인지 확인하고 trim() 적용 }); tableData.push(rowData); @@ -568,13 +568,12 @@ $(document).on("click", "#duplicationChkAll", function(e) { - -
- -
-
-
- +
+ +
+
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
- +
+
+ -
-
-
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp index 47367e1e..11835f31 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addr/include/addrListforSelf.jsp @@ -13,26 +13,6 @@ $(document).ready(function(){ // $("#btnAddrMassDupli").hide(); // $("#btnAddrMassSaveDupli").hide(); - //붙여넣기 이벤트 핸들러 - document.querySelector('#tabulator_clip').addEventListener('paste', function(e) { - e.preventDefault(); - var text = e.clipboardData.getData('text/plain'); - var rows = text.split('\n').map(row => row.split(',').map(cell => cell.trim())); - - var tableData = rows.map(row => { - return { - A: row[0] || "", - B: row[1] || "", - C: row[2] || "", - D: row[3] || "", - E: row[4] || "", - F: row[5] || "", - G: row[6] || "" - }; - }); - - $tableClip.setData(tableData); - }); }); @@ -211,7 +191,7 @@ $(document).ready(function(){ var removeDuplData = dupliPhoneData(tableData); - $tableClip.setData(removeDuplData); +// $tableClip.setData(removeDuplData); //총 받는사람 수 계산 totRows = $tableClip.getRows().length; @@ -355,7 +335,7 @@ $(document).ready(function(){ } var removeDuplData = dupliPhoneData(tableData); - $tableClip.setData(removeDuplData); +// $tableClip.setData(removeDuplData); //총 받는사람 수 계산 totRows = $tableClip.getRows().length; diff --git a/src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp b/src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp index 5f471b79..a9922c85 100644 --- a/src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/addrBlock/AddrBlockList.jsp @@ -172,6 +172,7 @@ $(document).ready(function(){ //받는 사람 리스트 영역에 클립보드 데이터 가져와보기 $('.callList_box').on('paste', function (e) { + console.log(' :: callList_box :: '); var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 var elmSplit= []; elmSplit = element.split("\n"); diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp index 1cec8003..1235c0fd 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/MsgDataSMLView.jsp @@ -905,6 +905,7 @@ $(document).ready(function (){ //받는사람 목록에 복사/붙여넣기 기능 처리 $('.callList_box').on('paste', function (e) { + console.log(' :: callList_box :: '); var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 diff --git a/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp index 59101f8d..a0d88b24 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgcampain/excel/MsgExcelDataSMLView.jsp @@ -616,6 +616,7 @@ $(document).ready(function (){ //받는 사람 리스트 영역에 클립보드 데이터 가져와보기 $('.callList_box').on('paste', function (e) { + console.log(' :: callList_box :: '); var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp index b95842f3..d9b67194 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/MsgDataSMLView.jsp @@ -826,6 +826,7 @@ $(document).ready(function (){ //받는사람 목록에 복사/붙여넣기 기능 처리 $('.callList_box').on('paste', function (e) { + console.log(' :: callList_box :: '); var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 diff --git a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp index fd61f25a..dbc2e3df 100644 --- a/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/msgdata/excel/MsgExcelDataSMLView.jsp @@ -845,6 +845,7 @@ $(document).ready(function (){ //받는 사람 리스트 영역에 클립보드 데이터 가져와보기 //받는사람 목록에 복사/붙여넣기 기능 처리 $('.callList_box').on('paste', function (e) { + console.log(' :: callList_box :: '); var element = e.originalEvent.clipboardData.getData('text'); // 클립보드에 복사한 데이터 가져오기 diff --git a/src/main/webapp/js/web/addr/event.js b/src/main/webapp/js/web/addr/event.js index 3d925fcb..b78b0e76 100644 --- a/src/main/webapp/js/web/addr/event.js +++ b/src/main/webapp/js/web/addr/event.js @@ -67,54 +67,59 @@ $(document).ready(function(){ var phoneNumberChk = false; var existingNumbers = new Set(); // 배열에서 Set으로 변경 - console.log('입력된 번호들 : ', data); - - let errorCount = 0; // 중복 번호 개수를 저장할 변수 let duplicateCount = 0; // 중복 번호 개수를 저장할 변수 - // 각 번호를 테이블에 추가 (중복 검사 및 포맷팅 포함) - for (let i = data.length - 1; i >= 0; i--) { -// console.log('index : ', index); -// console.log('existingNumbers : ', existingNumbers); + const errors = []; // 오류 데이터를 저장할 배열 + const duplicates = []; // 오류 데이터를 저장할 배열 + const newData = []; // 유효한 데이터만 저장할 새로운 배열 - let row = data[i]; - var number = row.addrPhoneNo; - const formattedNumber = formatPhoneNumber(number); // 번호 표준화 -// console.log('number : ', number) -// console.log('formattedNumber : ', formattedNumber) - const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 - if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 - if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사 -// $tableError.addRow({ phone: formattedNumber }); // 표준화된 번호로 추가 -// console.log('formattedNumber : ', formattedNumber); - -// console.log('통과 : ', row.addrPhoneNo, " : ", cleanedNumber); - row.addrPhoneNo = formattedNumber ; - existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 - } else { - // 오류 : 유효성 통과 못함 -// console.log('오류 : ', formattedNumber, ' : ',cleanedNumber); + data.forEach((row, index) => { + if (index % 10000 === 0) { + console.log('i : ', index); + } + + const number = row.addrPhoneNo; + const formattedNumber = formatPhoneNumber(number); // 번호 표준화 + const cleanedNumber = formattedNumber.replace(/[^0-9]/g, ''); // 숫자만 남김 + + if (!existingNumbers.has(cleanedNumber)) { // 중복 번호 체크 + if (isValidPhoneNumber(formattedNumber)) { // 유효성 검사 + row.addrPhoneNo = formattedNumber; + existingNumbers.add(cleanedNumber); // 추가된 번호를 기존 목록에 추가 + newData.push(row); // 유효한 데이터만 새로운 배열에 추가 + } else { + // 오류: 유효성 통과 못함 errorCount++; - $tableError.addRow({ +// $tableError.addRow({ +// name: row.addrNm, // 이름 +// phone: row.addrPhoneNo, // 폰번호 +// result: "오류" // 결과 메시지 추가 +// }); + errors.push({ name: row.addrNm, // 이름 phone: row.addrPhoneNo, // 폰번호 result: "오류" // 결과 메시지 추가 }); - data.splice(i, 1); // 유효하지 않은 행 삭제 - } - } else { - // 중복 -// console.log('중복 : ', row.addrPhoneNo); - duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가 - $tableError.addRow({ + } + } else { + // 중복 + duplicateCount++; // 중복 번호가 발견될 때마다 카운트를 증가 +// $tableError.addRow({ +// name: row.addrNm, // 이름 +// phone: row.addrPhoneNo, // 폰번호 +// result: "중복" // 결과 메시지 추가 +// }); + duplicates.push({ name: row.addrNm, // 이름 phone: row.addrPhoneNo, // 폰번호 result: "중복" // 결과 메시지 추가 }); - data.splice(i, 1); // 유효하지 않은 행 삭제 - } - }; + } + }); + + // data 배열을 newData 배열로 대체 + data = newData; // 중복 카운트 $(tabluC+" #rowDupCnt").text(duplicateCount); @@ -136,7 +141,12 @@ $(document).ready(function(){ $("#rowDupCnt").text(duplicateCount); $(tabluC+" #rowTotCnt").text($objTabul.getDataCount()); - + + var errorData = errors.concat(duplicates); + // 오류 및 중복 데이터를 한 번에 추가 + $tableError.setData(errorData); + + } function fn_phoneDupl_old($objTabul) { diff --git a/src/main/webapp/js/web/addr/init.js b/src/main/webapp/js/web/addr/init.js index 7648590a..8800b63e 100644 --- a/src/main/webapp/js/web/addr/init.js +++ b/src/main/webapp/js/web/addr/init.js @@ -39,7 +39,7 @@ $(document).ready(function(){ cell.getRow().toggleSelect(); } }, - {formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40}, + {formatter:"rownum", hozAlign:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40}, {title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, {title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, {title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, @@ -72,45 +72,13 @@ $(document).ready(function(){ headerHozAlign:"center", validationMode:"highlight", placeholder:"복사(Ctrl+C)한 내용을 여기에 붙여넣기(Ctrl+V) 해주세요.", //fit columns to width of table (optional) - clipboard:true, // 클립보드 기능 활성화 +// clipboard:true, // 클립보드 기능 활성화 clipboardPasteAction:"update", // insert, update, replace - clipboardPasteParser: function(clipboard) { - /*console.log('clipboard: ', clipboard); // 클립보드의 원본 내용 확인 - - var rows = clipboard.split('\n').map(row => { - var cells = row.split(/[\t,]+/).map(cell => cell.trim()); - return cells; - }).filter(row => Array.isArray(row) && row.some(cell => cell !== "")); - - console.log('파싱된 rows: ', rows); // 파싱된 행 데이터 확인 - - var tableData = rows.map(row => { - return { - A: row[0] || "", - B: row[1] || "", - C: row[2] || "", - D: row[3] || "", - E: row[4] || "", - F: row[5] || "", - G: row[6] || "" - }; - }); - - console.log('새로 추가될 데이터: ', tableData); // 추가될 데이터 확인 - - // 기존 테이블 데이터를 가져와서 병합 - var existingData = $tableClip.getData(); // 기존 데이터를 가져옴 - console.log('기존 : ', existingData); - var combinedData = existingData.concat(tableData); // 기존 데이터에 새로운 데이터 추가 - console.log('병합 : ', combinedData); - - return combinedData; // 병합된 데이터를 반환하여 기존 데이터 아래에 추가되도록 함 -*/ }, columns: [ {formatter: "rowSelection", titleFormatter: "rowSelection", clipboard: false, hozAlign: "center", headerHozAlign: "center", headerSort: false, cellClick: function(e, cell) { cell.getRow().toggleSelect(); }}, - {formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40}, + {formatter:"rownum", hozAlign:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40}, {title:"A", field:"A", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, {title:"B", field:"B", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, {title:"C", field:"C", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, @@ -119,16 +87,14 @@ $(document).ready(function(){ {title:"F", field:"F", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, {title:"G", field:"G", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]} ], - validationFailed:function(cell, value, parameters){ // 유효성 체크 함수 - var valid = cell.isValid(); - if(!valid){ - alert("양식에 맞지 않는 정보가 입력되었습니다."); - - //해당 셀 데이터 삭제 - cell.setValue(""); - } - return value % parameters.phone; - }, + validationFailed: function(cell, value, parameters) { + var valid = cell.isValid(); + if (!valid) { + alert("양식에 맞지 않는 정보가 입력되었습니다."); + cell.setValue(""); // 해당 셀 데이터 삭제 + } + return false; // 유효하지 않은 경우 false 반환 + }, }); @@ -143,19 +109,11 @@ $(document).ready(function(){ clipboard:false, clipboardCopySelector:"table", clipboardPasteAction:"insert", // insert, update, replace - placeholder:"Excel 파일을 업로드 해주세요.", //fit columns to width of table (optional) + placeholder:"등록 팝업에서 휴대폰을 선택 후 확인해주세요.", //fit columns to width of table (optional) columns:[ //Define Table Columns -// {formatter:"rowSelection", titleFormatter:"rowSelection",clipboard:false, hozAlign:"center", headerSort:false, cellClick:function(e, cell){ -// cell.getRow().toggleSelect(); -// } -// }, -// {formatter:"rownum", align:"center" ,title:"No", hozAlign:"center", headerHozAlign:"center", width:40}, {title:"이름", field:"name", hozAlign:"center", headerHozAlign: "center", width:125}, {title:"휴대폰", field:"phone", hozAlign:"center", headerHozAlign: "center", width:158}, {title:"미등록 결과", field:"result", hozAlign:"center", headerHozAlign: "center", width:125} -// {title:"이름", field:"name", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, -// {title:"휴대폰", field:"phone", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, -// {title:"미등록 결과", field:"result", hozAlign:"center", headerHozAlign: "center", width:125, validator:["maxLength:100", "string"]}, ] });