Translate

2019년 6월 2일 일요일

[jqGrid] Upgrade from 3.6.4 to 3.6.5 설명







유효한 JSON 응답

 - json 응답은 올바른 json 형식의 문자열 이어야 한다.

{ 
  total: "xxx", 
  page: "yyy", 
  records: "zzz",
  rows : [
    {id:"1", cell:["cell11", "cell12", "cell13"]},
    {id:"2", cell:["cell21", "cell22", "cell23"]},
      ...
  ]
}
즉, 위와 같이 표시되는경우 작동되지 않으며, 아래와 같이 올바르게 정의해야 한다.
{ 
  "total": "xxx", 
  "page": "yyy", 
  "records": "zzz",
  "rows" : [
    {"id" :"1", "cell":["cell11", "cell12", "cell13"]},
    {"id" :"2", "cell":["cell21", "cell22", "cell23"]},
      ...
  ]
}





d 속성

 - ajax complete 에서 ajax success 이벤트로 전환 시 jqGrid parse 함수를 건너뛰며, 이 함수는 응답에서 d 속성을 자동으로 감지한다. (특정 시스템에서 사용됨)
1004lucifer
이 문제를 해결하려면 jsonReader가 이 속성을 올바르게 해석할 수 있도록 변경해야 한다.
jQuery("#gridid").jqGrid({
...
   jsonReader : {
     root: "rows",
     page: "page",
     total: "total",
     records: "records",
     repeatitems: true,
     cell: "cell",
     id: "id",
     userdata: "userdata",
     subgrid: {root:"rows", 
        repeatitems: true, 
       cell:"cell"
     }
   },
...
});
위의 코드를 아래와 같이 변경해야 한다. (셀 속성을 변경해서는 안된다)
jQuery("#gridid").jqGrid({
...
   jsonReader : {
     root: "d.rows",
     page: "d.page",
     total: "d.total",
     records: "d.records",
     repeatitems: true,
     cell: "cell",
     id: "id",
     userdata: "userdata",
     subgrid: {root:"d.rows", 
        repeatitems: true, 
       cell:"cell"
     }
   },
...
});





loadComplete 변경

 - loadComplete 이벤트에 대한 문서에서 응답에 대한 요청을 매개변수로 전달한다.
v3.6.5 이전에는 response를 사용하려면 responseText 속성을 사용해야했다.
v3.6.5 부터는 datatype 매개변수에 따른 jQuery에서 자동변환된 서버의 데이터이다.


예를들어 datatype: json 을 사용한다고 했을때 v3.6.5 이전에는 아래와 같았다.
jQuery("#gridid").jqGrid({
...
datatype : "json",
loadComplete : function (response) {
// to convert the request using JSON.parse to JavaScrip object you do maybe this:
var myrequest  = JSON.parse(response.responseText);
....
},
...
});
v3.6.5 부터는 JSON.parse 가 필요없어졌다.
jQuery("#gridid").jqGrid({
...
datatype : "json",
loadComplete : function (response) {
// no need to use JSON.parse:
var myrequest  = response;
....
},
...
});


참고
 - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:upgrade_from_3.6.4_to_3.6.5

댓글 없음 :

댓글 쓰기