사용자 다중선택 - 삭제,수정시 체크박스 유지 에러해결
-> 체크박스 유지시 rowid값을 찾아서 그리드가 체트되게 구현햇었다.
그런데 rowid값으로만 값을 찾아가면 페이지가 넘겨졌을때 똑같은 rowid값을 찾아가 그리드를 체크가되는것을 발견!
(rowid에 다른 데이터들은 페이지가 바뀔때마다 데이터가 바뀌니까... )
그래서 다중선택된 dcode와 rowid의 dcodr를 추출해 둘의 값이 같으면 체크박스를 체크하기로 변경
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | //사용자 정보수정 - 수정정보저장 후 데이터리로드 function userUpdateSaveData(dcode,rowid,cnt){ //alert("사용자 정보수정 - 다중"); $.ajax({ url:'/library/userUpdateModalMult.do', type:'POST', data:JSON.stringify(dcode), dataType:'html', contentType : "application/json", success: function(data){ var list = JSON.parse(data); var modalTitle = {}; modalTitle.title = "사용자 정보수정"; modalTitle.formClass = "user_UpdatePopup"; var selCount = rowid.length; $("#list2").jqGrid('setGridParam', { gridComplete : function() { //다중선택된사용다dcode와 rowid를총해뽑읍 dcode를 비교해 둘이 같은 dcode를 가지고있으면 체크값 유지 var rowidDcode = new Array(); for (var i = 0; i < rowid.length; i++) { //row id수만큼 실행 rows = JSON.stringify($("#list2").getRowData(rowid[i])); rowidDcode.push(JSON.parse(rows).dcode); if(dcode[i] == rowidDcode[i]){ $("input:checkbox[id='jqg_list2_"+rowid[i]+"']").prop("checked", true); $("#"+rowid[i]+"").attr("class", "jqgrow ui-row-ltr ui-widget-content ui-state-highlight"); } } } }).trigger("reloadGrid"); nextUserUpdateModalMult(list, modalTitle, cnt, selCount,rowid);// 수정된 정보 저장 후 다중상세보기 AJAX로 가기위해 rowid를 추가 }, error: function(request, status, error) { console.log("code:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error); alert("실패"); } }); } //사용자 정보수정 - 다중(수정할 데이터 뿌리기) //function userUpdateModalMult(dcode,rowid) $("#deleteModel").click(function(){ var DCODE = list[cnt].dcode; // 삭제할 rowid 배열에서 삭제 var arr = $.grep(rowid, function(el){ // 배열의 원소수만큼 반복 // el은 배열의 각각의 원소 return el != rowid[cnt]; // 현재 rowid와 원소 배열이 같지 않은 값들만 저장 }); // 그리드 체크박스 유지를 위해 (rowiddcode와 비교위해) var dcode = new Array(); console.log("rowid "+rowid); for (var i = 0; i < rowid.length; i++) { rows = JSON.stringify($("#list2").getRowData(rowid[i])); dcode.push(JSON.parse(rows).dcode); } //삭제할rowid 그리드 체크박스 유지를위하여 var dRowid = rowid[cnt]; userDelete(DCODE,arr,dRowid,dcode); }); }; //사용자 정보수정 - 삭제 //사용자 정보수정 - 삭제 function userDelete(DCODE,arr,dRowid,dcode){ if(confirm("정말 삭제하시겠습니까??") == true){ $.ajax({ type : "POST", url : "/library/userViewDelete.do", dataType : "html", async : true, data : {"DCODE":DCODE}, contentType : "application/json", complete: function(){ var rid = arr; // 그리드 더블클릭 & 하나의 데이터 상세보기 - 삭제시 if(rid.length==0){ $("#list2").jqGrid({ // jqGrid 리로드 url : '/library/gridView.do', datatype : 'json'}).trigger("reloadGrid"); $("#close").click(); }else{ //다중상세보기 - 하나의 데이터 삭제시 var dcode = new Array(); //dcode추출 for (var i = 0; i < rid.length; i++) { rows = JSON.stringify($("#list2").getRowData(rid[i])); dcode.push(JSON.parse(rows).dcode); } dRowid = Number(dRowid); //삭제후 바뀐 rowid 설정 /* 삭제된 rowid (dRowid)기준으로 앞에 rowid는 놔두고 뒤에 rowid는 -1을 해줘야함 삭제된 rowid값보다 rowid값이 작으면 놔두기*/ var rowid = new Array(); for(var i=0;i<rid.length;i++){ a=Number(rid[i]); if(dRowid>a){ rowid.push(a); continue;} a = a-1; a = a.toString(); rowid.push(a); } ; $("#list2").jqGrid('setGridParam', { gridComplete : function() { var rowidDcode = new Array(); for (var i = 0; i < rowid.length; i++) { //row id수만큼 실행 rows = JSON.stringify($("#list2").getRowData(rowid[i])); rowidDcode.push(JSON.parse(rows).dcode); if(dcode[i] == rowidDcode[i]){ $("input:checkbox[id='jqg_list2_"+rowid[i]+"']").prop("checked", true); $("#"+rowid[i]+"").attr("class", "jqgrow ui-row-ltr ui-widget-content ui-state-highlight"); } } } }).trigger("reloadGrid"); userUpdateModalMult(dcode,rowid); } } }); } else { // 취소 return; } } | cs |
'개발 > 개인' 카테고리의 다른 글
⊙사용자 이름.사원번호검색,상세검색 완료(페이징,알럿창) (0) | 2016.12.20 |
---|---|
사용자 이름,사원번호 검색 페이징 수정 , 검색 쿼리의 변화 (0) | 2016.12.20 |
사용자 정보수정 - 삭제 후 그리드 리로드(체크박스유지) -> 16.12.15 수정 (0) | 2016.12.07 |
function userDetaileViewShow(emp,title) - 사용자 정보 상세보기 전체부분 (0) | 2016.12.01 |
function userUpdateModalShow(emp,title) // 사용자 정보 상세보기 - 정보수정부분전체 (0) | 2016.12.01 |
댓글