본문 바로가기
개발/개인

사용자 다중선택 - 삭제,수정시 체크박스 유지 에러해결

by areumtb 2016. 12. 19.

사용자 다중선택 - 삭제,수정시 체크박스 유지 에러해결

 -> 체크박스 유지시 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


댓글