Translate

2019년 5월 12일 일요일

[jqGrid] Nested Set Model 설명







실습 jqGrid 버전: CDN 제공하는 v4.6 버전으로 테스트



Nested Set Model


treeReader 구성
 - Nested Set 모델을 이용하여 그리드를 구성할 때 기본 treeReader 는 아래와 같다.
treeReader : {
    level_field: "level",
    left_field:"lft",
    right_field: "rgt",
    leaf_field: "isLeaf",
    expanded_field: "expanded"
}
treeReader 는 colModel의 필드를 자동으로 확장시켜 마지막에 추가되고 숨겨진다.
서버에서 반환된 데이터는 트리그리드를 구성하기 위해 필드에 대한 정보를 포함해야 한다.

1004lucifer
Field Type Description
level_field number 이 필드는 요소의 계층 레벨을 정의한다.
일반적으로 root 요소는 레벨 0이며, root의 첫번째 자식은 레벨 1이다.
그리드가 모든 요소를 설정하려면 이 정보가 필요하다.
left_field number 왼쪽 끝의 필드 rowid
right_field number 오른쪽 끝의 필드 rowid
leaf_field boolean 이 필드는 그리드의 leaf(마지막) 요소인것을 정의한다.
이 leaf 요소는 확장/축소 할 수 없으며 다른 이미지가 첨부된다.
expanded_field boolean 로딩중에 요소(element)를 확장할지 결정한다. (기본값: false)
이 요소에 데이터가 없을 수 있지만 데이터셋에서 삭제될수 없다.
* 변경 가능한 또다른 옵션은 tree_root_level 이며, 기본값은 0 이다. (루트 요소가 있는 수준을 지정한다.)



서버에 전송되는 데이터?
 - reader가 설정된 이후에 자식노드의 속성을 로드할 때 서버에 요청하는 데이터를 알아야 한다.
 - 자동 lading 트리노드의 경우에는 다음과 같은 데이터를 보내며, postData 배열을 확장한다.
postData : {
   ...
   nodeid:rc.id,
   n_left:rc.lft,
   n_right:rc.rgt,
   n_level:rc.level,
   ...
}
nodeid: 현재 확장된 레코드의 id
n_left: 현재 확장된 row의 왼쪽값
n_right: 현재 확장된 row의 오른쪽값
n_level: 현재 확장된 row의 level 값



* jqGrid v4.6의 문제인지 json 의 경우에만 그런지는 모르겠지만 샘플을 만들 때 colModel에 id가 제일 앞에 있으면 id가 hidden이 되면서 확장/축소 아이콘이 같이 hidden되어져 버리는 증상이 있어 마지막에 id를 넣었다.


추가적인 예제는 참고 링크의 공식문서에 있다.

참고
 - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:nested_set_model

댓글 없음 :

댓글 쓰기