위에서는 12/7일에 완성한 사용자 정보수정 - 삭제 후 그리드 리로드(체크박스유지) 이다.
그런데 에러가 발생하였다.
예를들어 rowid 2,3,4 의 정보중 2번의 row를 지울때 지운 rowid의 값들이 하나씩 앞으로 당겨진다는것이다.! ==> 당연한건데 ㅜㅜ
(rowid:2,3,4 (dcode:11,22,34) 에서 2번row에 데이터를 지우면(dcode:11이 지워짐) 남은 dcode:22,34의 그리드에 체크가 되어야 하는데
로우번호가 하나씩 앞당겨져 row번호대로 그리드가 체크가 됨 )
16.12.15 수정
그래서 하루종일 머리싸매다가 이렇게 하였다 으어어어
삭제된 rowid의 값을 토대로
2,3,4 번의 사용자 정보를 볼때
2번을 삭제하였으면 그 뒤 번호들은 2,3으로 변경되어야하고 == 3,4 ->2,3
3번을 삭제하였으면 2번은 그대로 놔두고 4번을 3번으로 == 2,4 -> 2,3
4번을 삭제하였으면 앞 번호들은 그대로 == 2,3 -> 2,3
이렇게 되어야 한다.
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 | $("#deleteModel").click(function(){ var DCODE = list[cnt].dcode; // 삭제할 rowid 배열에서 삭제 var arr = $.grep(rowid, function(el){ // 배열의 원소수만큼 반복 // el은 배열의 각각의 원소 return el != rowid[cnt]; // 현재 rowid와 원소 배열이 같지 않은 값들만 저장 }); 1.삭제한 rowid값을 저장 //삭제할rowid 그리드 체크박스 유지를위하여 var dRowid = rowid[cnt]; userDelete(DCODE,arr,dRowid); }); }; function userDelete(DCODE,arr,dRowid){ 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); } ) 2-1.rowid 값 비교를 위해 형변환 (String ==> int) dRowid = Number(dRowid); //삭제후 바뀐 rowid 설정 /* 삭제된 rowid (dRowid)기준으로 앞에 rowid는 놔두고 뒤에 rowid는 -1을 해줘야함 삭제된 rowid값보다 rowid값이 작으면 놔두기*/ var rowid = new Array(); for(var i=0;i<rid.length;i++){ 2-2.rowid 값 비교를 위해 형변환 (String ==> int) a=Number(rid[i]); if(dRowid>a){ // 삭제한 rowid보다 나머지 rowid중 작은 rowid는 아래문장을 건너뛰기 3.삭제한 rowid(dRowid)값이 rowid값보다 클 경우 그대루 담기 rowid.push(a); continue;} // 아래 문장을 건너뛰기위하여 4.rowid를 하나씩 앞으로 당겨야 하니 rowid-1을 해준다. a = a-1; 5.형변환한 rowid를 다시 String형으로 변환 (int ==> String ) a = a.toString(); rowid.push(a); } ; $("#list2").jqGrid('setGridParam', { gridComplete : function() { for (var i = 0; i < rowid.length; i++) { //row id수만큼 실행 $("input:checkbox[id='jqg_list2_"+rowid[i]+"']").prop("checked", true); $("#"+rowid[i]+"").attr("class", "jqgrow ui-row-ltr ui-widget-content ui-state-highlight"); console.log("그리드리로드 rowid[i] "+rowid[i]); } } }).trigger("reloadGrid"); userUpdateModalMult(dcode,rowid); } } }); } else { // 취소 return; } } | cs |
'개발 > 개인' 카테고리의 다른 글
사용자 이름,사원번호 검색 페이징 수정 , 검색 쿼리의 변화 (0) | 2016.12.20 |
---|---|
사용자 다중선택 - 삭제,수정시 체크박스 유지 에러해결 (0) | 2016.12.19 |
function userDetaileViewShow(emp,title) - 사용자 정보 상세보기 전체부분 (0) | 2016.12.01 |
function userUpdateModalShow(emp,title) // 사용자 정보 상세보기 - 정보수정부분전체 (0) | 2016.12.01 |
사용자 상세검색 _modal (0) | 2016.11.30 |
댓글