본문 바로가기
개발/jqgrid

그리드 리로드 + 체크박스 유지

by areumtb 2016. 12. 7.

그리드 리로드 + 체크박스 유지



두명 이상의 사용자 정보 수정이나 삭제시 체크했던 체크박스 유지를 하기위해 이것저것 수행함




1. 먼저 그리드를 체크하면 html에서 어떤 변화가 생기는지 확인 



체크박스에 마우스커서를 올려놨을때

1
2
3
4
5
// 그리드 한줄
<tr role="row" id="1" tabindex="-1" class="jqgrow ui-row-ltr ui-widget-content" aria-selected="true">
<td role="gridcell" style="text-align:center;width: 35px;" aria-describedby="list2_cb">
 
//체크박스 
<input role="checkbox" type="checkbox" id="jqg_list2_1" class="cbox " name="jqg_list2_1" aria-selected="true">
cs




그리드를 체크했을때 


1
2
3
4
5
// 그리드 한줄
<tr role="row" id="1" tabindex="-1" class="jqgrow ui-row-ltr ui-widget-content ui-state-highlight" 
aria-selected="true">
<td role="gridcell" style="text-align:center;width: 35px;" aria-describedby="list2_cb">
 
 //체크박스 
<input role="checkbox" type="checkbox" id="jqg_list2_1" class="cbox " name="jqg_list2_1" aria-selected="true">
cs




이렇게 그리드 tr에는 class 에 ui-state-highlight 추가되어 색 반전이 되고 aria-selected="true"

체크박스는 aria-selected="true"


이런 두가지 변화가 있었다.




12/06일 어제는 체크박스에 aria-selected="true" 추가되는거만 주목하여 그냥 선택한 rowid만큼 for문돌려 선택하게 하면 되겟구나 해서 jqgrid checked라고 검색을해

체크되는 것에만 주목하엿다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        $("#list2").jqGrid('setGridParam', {
                    gridComplete : function() {
                            console.log("999");
                               for (var i = 0; i < rowid.length; i++) { //row id수만큼 실행           
                                   console.log("78789 "+"jqg_list2_"+rowid[i]);

                                    시도했던 여러가지 시도들...
                                    
                                    1. 아래방법으로 선택이 가능하나 실험해봄
                                       $("input:checkbox[id='jqg_list2_1']").prop("checked"true); 
                                    2. prop를 이용해 aria-selected에 true를 추가하려 함 
                                     $("#list2 > #jqg_list2_"+rowid[i]).prop("aria-selected","true");                         
                                    3. 그리드 안에 id가 jqg_list2_ (체트박스 id) 를 찾아 prop를 이용해 disabled을 하려함
                                     $("#list2").find("#jqg_list2_"+rowid[i]).prop("disabled","disabled") ;
                                    4.그리드 안에 id가 jqg_list2_ (체트박스 id) 를 찾아 attr로 속성을 checked로 
                                     $("#list2 > #jqg_list2_"+rowid[i]).attr("checked","checked") ;
                                 
                               console.log([i]);
                               }
                    }
                }).trigger("reloadGrid");
cs



6일 하루종일하다가 7일 아침에 와서 정신차리고 다시 살펴보니 변화가 두가지인것을 알아챔 

그래서 일단 체크가 되는지 그리드에 직접 실험해보았다.


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
        //width : 850,
        height : '450px',
        showpage : true// 페이징 true
        multiselect : true,
        pager : $('#pager'),
        autowidth: true,
        emptyrecords : "데이터가 없습니다." ,// 레코드가 없을때 보여줄 문구
        loadonce : false// true를 하면은 페이징은 되지만 수정을했을때 리로드가 안됨 아니 그냥 리로드가 안됨 
        ondblClickRow: function(rowid){
            var dcode = new Array();         //userDetaileViewMult에서 값을 가져오기위해 어차피 값은 1개지만 배열에 담으려고 for문 돌림
            for (var i = 0; i < rowid.length; i++) {
                rows = JSON.stringify($("#list2").getRowData(rowid[i]));
                dcode.push(JSON.parse(rows).dcode);
            }
            $("#userModal_GridBtn").click();
            userDetaileViewMult(rowid, dcode);
        },
        gridComplete : function() {
            $(".ui-pg-input").css({"color" : "#333","text-align" : "center"});
// 1.체크박스에 체크 추가
            $("input:checkbox[id='jqg_list2_1']").prop("checked"true);
// 2.그리드에 class (css효과) 추가
          $("#1").attr("class""jqgrow ui-row-ltr ui-widget-content ui-state-highlight");
        }
    });
}
 

cs

그랫더니 잘 되었음 그래서 이젠 시도하려 ㄱㄱ





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
//사용자 정보수정 - 수정정보저장 후 데이터리로드
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;
            
                nextUserUpdateModalMult(list, modalTitle, cnt, selCount,rowid);// 수정된 정보 저장 후 다중상세보기 AJAX로 가기위해 rowid를 추가
                
                console.log("dd "+rowid.length);
/*                $("#list2").jqGrid({}).trigger("reloadGrid");  // jqGrid 리로드
*/                
                $("#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");
                               }
                    }
                }).trigger("reloadGrid");
        },
        error:  function(request, status, error) {
            console.log("code:" + request.status + "\n" + "message:"
                    + request.responseText + "\n" + "error:" + error);
             alert("실패");
        }
    });
}
 
cs



이젠 새로고침해도 체크박스가 그대로 남아있음 ㅠㅠ

'개발 > jqgrid' 카테고리의 다른 글

★jqgrid 페이징 분리  (0) 2016.12.14
★jqgrid 페이징 구현(쿼리) --> count추가 2016.12.21  (0) 2016.12.12
jqgrid loadComplete , gridComplete  (0) 2016.12.08
JQGRID  (0) 2016.12.06
jQgrid 기본 설정 - ing  (0) 2016.11.03

댓글