RealGrid2 가이드
트리
트리 Lazy Loading

트리 Lazy Loading

트리뷰에 표시할 데이터셋을 초기에 모두 로드 할 필요는 없습니다. 사용자가 트리 행을 펼치는 시점에 그 행의 자식 행들을 가져와 트리뷰에 추가할 수 있습니다.

현재 자식이 없는 트리 행이지만 자식이 있는 것으로 표시하고 행 펼침 시 자식을 추가하려면. 먼저 행 추가시 자식 있음 설정을 true로 해야 합니다.

setRows()의 네번째 필드가 자식 있음 여부를 지정한 필드의 이름입니다. 0보다 큰 값을 "자식 있음"으로 간주하여 가져온 데이터는 자식데이터가 없지만 +를 표시합니다.

아래 예제예서는 서울특별시만 추가 데이터가 있다고 표시하였습니다.

처음 조회시 가져온 데이터

  var data = [
    {
      "treeId": "11",
      "treeName": "서울특별시",
      "area1code": "11",
      "area1name": "서울특별시",
      "hasChild": 1,   //앞에 + 표시
      "iconField": 0
    },
    {
      "treeId": "20",
      "treeName": "제주도",
      "area1code": "22",
      "area1name": "제주도",
      "hasChild": 0,  //자식 데이터가 없다고 지정했기 때문에 앞에 아무 표시가 없음 
      "iconField": 8
    }
  ];
 
  treeProvider.setRows(data, "treeId", true, "hasChild", "iconField")

펼칠때 다음 데이터 가져오기

  treeView.onTreeItemExpanding = function (tree, itemIndex, rowId) {
    // false를 리턴하면 펼쳐지지 않는다.
    // return false;
 
    // expanding 중인 행이 자식이 하나도 없다면 hasChildren이 설정된 행이다.
    // 자식들을 가져와 그 행에 추가한다.
    if (treeProvider.getChildCount(rowId) <= 0) {
      //펼치려는 행의 키 값을 가져와서 db에서 해당 행의 자식들을 가져온 후 addChildRow()를 사용해서 추가한다.
      //var key = treeProivder.getValue(rowId, "treeId");
 
      var datas = [{
        "treeId": "11.010",
        "treeName": "종로구",
        "area1code": "11",
        "area1name": "서울특별시",
        "area2code": "11010",
        "area2name": "종로구",
        "iconField": 1
      },
      {
        "treeId": "11.020",
        "treeName": "중구",
        "area1code": "11",
        "area1name": "서울특별시",
        "area2code": "11020",
        "area2name": "중구",
        "iconField": 2
      },
      {
        "treeId": "11.030",
        "treeName": "용산구",
        "area1code": "11",
        "area1name": "서울특별시",
        "area2code": "11030",
        "area2name": "용산구",
        "iconField": 3
      } ];
      
      datas.forEach(function(el) {
        var childId = treeProvider.addChildRow(rowId, el, el.iconField, true);
      })
    }
 
    return true;
  }