2009-11-06 4 views
3

기본 ExtJS 질문이 있는데 문서를 읽고 검색하는 방법에 따라 해결할 수없는 것으로 보입니다. 현재 URL에서 JSON을 직접로드하는 TreePanel이 있습니다. 뷰에서 데이터를 분리하려고하므로 해당 데이터를 OpenLayers 맵 (GeoExt 사용)에 공급할 수도 있습니다. TreePanel을 URL이 아닌 Ext.data.Store로 어떻게 연결할 수 있습니까?트리 용 ExtJS 데이터 저장소

+2

상황 같은데 TreeGrid에이 성분의 첨가는 ExtJS 3.1으로 변화된다 http://www.extjs.com/blog/2009/12/17/ext-js-3-1-massive-memory- 개선 - treegrid-and-more % E2 % 80 % A6/ –

+0

경고 :이 질문과 대답은 구식이며 (4 세)입니다. 그래서이 파일을 보관하는 방법이 있었으면 좋겠어. – HDave

답변

11

TreePanels는 데이터를로드하기 위해 상점이 아닌 TreeLoader를 사용합니다. 그 이유는 Stores가 플랫 테이블 구조이고 계층 구조를 지원하지 않는 반면 나무는 계층 적 데이터를 필요로하기 때문입니다. 기본 데이터 객체도 다릅니다 (레코드 대 노드). 물론 상위/하위 키를 사용하여 Store에 고유 한 계층 적 데이터를 저장할 수 있지만 현재 Ext 구성 요소에 내장 된 것과 같은 것은 없습니다. 트리 데이터를 캐시하려는 경우이를 위해 자체 솔루션을 롤업해야 할 수도 있습니다.

EDIT : Ext 4는 현재 Ext 3에만 적용됩니다. Ext 4는 (대부분) 통합 데이터 모델을 가지며 트리는 TreeStore를 사용하고 (모델에 추가 NodeInterface가 적용됨) 더 이상 사용하지 않습니다. 별도의 TreeLoader 클래스가 있어야합니다. 당신의 TreePanel 설정에서

+5

"ExtJS 4 이후"업데이트를 다시 보내 주셔서 감사합니다! –

1

, 그냥 데이터 URL을 가리 킵니다. 이 데이터에 대한 Store 필요한 경우 데이터 형식이 다를 수 있기 때문에, bmoeskau에서 언급 한 바와 같이

loader: new Ext.tree.TreeLoader({ 
    url: '/path/to/data.json', 
    requestMethod: 'GET', 
    preloadChildren: true 
    }) 

, 그것은 까다로운 얻을 수 있습니다. 우리의 응용 프로그램에서

0

우리는 모두 (전통 나무 로더를 사용하여 트리) 데이터에 대한 요청을 만들고, 나무 패널과 DataView를의 조합을 사용하고 데이터 저장소를 사용하여 볼 수 있습니다. 둘 다 같은 URL에 제출하고 있습니다. 그렇습니다. 두 번의 호출이 있지만 결과는 뷰 매개 변수 (트리 또는 데이터 뷰)에 의해 올바른 형식으로 반환되며 그 결과는 동일하고 방금 다르게 꾸며졌습니다.

는 하나의 전화, 중앙 데이터를 가지고 이상적 일 것이다, 그러나 이것은 수용 가능한 작동하는 것 같다.

추상에 (노드에 기록)의 분석을 몇 가지 함수를 작성하고 당신도 데이터를 액세스하는 일반적인 방법으로 끝낼.

+1

이것은 분명히 많은 사람들에게 고통의 포인트입니다. Ext 4.0 로드맵에는 관계형 상점이 포함되어 있으므로 결국이 문제를 해결할 수 있기를 바랍니다. http://www.extjs.com/products/js/roadmap.php –