2010-05-27 2 views
1

TLDR EXTJS의 treepanel에서 이전 설정을 기억하고 싶습니다. ExtJS를-3.2.1 나는이 ExtJS에-2.x.x에 대해 한 번도 본ExtJS - TreePanel의 상태 저장.


: See here on the extjs forums.
그러나 그들은 거의 생명이 없으므로,이 질문을하거나 유사한 질문을하는 스레드가 최대 6 개월 동안 응답하지 않습니다. 나는 그것을 여기에 가져올 것이라고 생각했다.

내 treePanel에서 이전에 열었던 폴더와 체크 박스를 기억할 수 있어야합니다. 그것은 async treePanel입니다. 이것은 모든 클라이언트 측 스크립트입니다. 다음과 같이

패널은 다음과 같습니다

var layerTree = new Ext.tree.TreePanel({ 
    border: true, 
    region: "east", 
    title: 'LayersTree', 
    width: 250, 
    split: true, 
    collapsible: true, 
    collapsed: true, 
    iconCls: 'treePanelIcon', 
    enableDD: true, 
    autoScroll: true, 
    //pulls in layers and their attributes// 
    root: new Ext.tree.AsyncTreeNode({ leaf: false, 
    loaded: false, 
    expanded: true, 
    text: 'Tree Root', 
    children: treeLayers 
    }) 

오전 사용의 ExtJS - 3.2.1, GeoExt, OpenLayers.

누구나 이전에이 작업을 수행했거나 수행 방법을 알고 있습니까? (어떤 대답이 감사하게 플러그인은 있지만)
(extjs라는-3.2.1)

사람은 쿠키에 바인딩이의 ExtJS 상태 저장 기능을 사용하는 방법을 알아?

답변

1

나는 이것이 모든 질문에 정확하게 대답 할 수 없다는 것을 알고 있지만, 나는 이것들을 거의 서버 측에서 모두 수행했다. 중요한 것은 AsyncTreeNodes를 사용하더라도 노드의 다른 배열을 포함하는 children 속성을 노드에 명시 할 수 있다는 것입니다.

그래서 TreePanel의 TreeLoader 인스턴스에서 호출하는 URL 함수에서 데이터베이스에로드되는 노드의 '경로'를 저장했는지 확인했습니다 (서버에서이 상태를 유지하는 것이 중요 함) . 그래서 나는로드 된 노드와 그것의 부모 노드의 레벨과 값을 데이터베이스에 저장합니다.

이렇게하려면 loader beforeLoad 이벤트에 리스너를 추가하고 해당 정보를 로더의 baseParams 속성에 설정합니다.

그런 다음 루트 노드의 자식을로드하는 경우 로더에서 호출하는 서버의 동일한 함수가 자식 노드를 수집하기 위해 재귀 적으로 호출하도록했습니다 (데이터베이스에 저장된 내용을 기반으로) . 그래서 실제 JSON 루트 노드의 로더로 돌아은 다음과 같습니다 상태가 다음 마지막 '로드'노드 반드시 선택 및/또는 열린 마지막을 기억할 것입니다

[ 
    { 
     "x3id": "", 
     "text": "[blank value]", 
     "iconCls": "", 
     "leaf": false, 
     "expanded": true, 
     "children": [ 
      { 
       "x3id": "", 
       "text": "[blank value]", 
       "iconCls": "", 
       "leaf": false, 
       "expanded": true, 
       "children": [ 
        { 
         "x3id": "", 
         "text": "[blank value]", 
         "iconCls": "", 
         "leaf": false, 
         "expanded": true, 
         "children": [ 
          { 
           "x3id": false, 
           "text": "False", 
           "iconCls": "", 
           "leaf": false, 
           "expanded": true, 
           "children": [ 
            { 
             "x3id": 0, 
             "text": "0", 
             "iconCls": "fakeleaf", 
             "leaf": true, 
             "expanded": true, 
             "children": [ 

             ], 
             "expandable": false 
            }, 
            { 
             "x3id": 1, 
             "text": "1", 
             "iconCls": "fakeleaf", 
             "leaf": true, 
             "expanded": true, 
             "children": [ 

             ], 
             "expandable": false 
            } 
           ] 
          } 
         ] 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     "x3id": "Wed, 19 May 2010 16:17:00 -0400", 
     "text": "05/19/2010 04:17:00 PM", 
     "iconCls": "", 
     "leaf": false, 
     "expanded": false, 
     "children": "" 
    } 
] 

참고. 그렇게하려면 TreePanel이나 그 정보를 저장할 무언가의 click 이벤트를 청취해야합니다.

물론 이것은 내가 사용하고 있다고 생각되는 확인란을 처리하지 않지만 올바른 이벤트를 듣는다면 서버에 콜백하여이 정보를 저장 한 다음 어린이에게 checked 속성을 추가 할 수 있습니다 초기 JSON에서. 희망이 도움이됩니다!

+0

동정을 처리하는 좋은 방법 XD 서버 측을 사용하지 않고 있습니다. XD – Sphvn

+0

오, 죄송합니다. 내 대답은 그다지 도움이되지 않습니다! – SBUJOLD

+0

스레드가 죽었습니다 ... – Sphvn