首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExtJS -拯救treePanel州。

ExtJS -拯救treePanel州。
EN

Stack Overflow用户
提问于 2010-05-27 04:53:22
回答 1查看 4.1K关注 0票数 1

TLDR --我希望我的EXTJS树能记住它以前的设置。ExtJS-3.2.1

我以前见过ExtJS-2.x.x :参见这里的extjs论坛。这样做。

但正如他们所看到的,他们几乎没有生命,在那里的线程提出这个问题或类似的,没有答复长达6个月。我想我会把它带来这里。

我需要能够让我的treePanel记住以前打开的文件夹和复选框。它是异步treePanel。请注意,这都是客户端脚本。

小组成员如下:

代码语言:javascript
复制
 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的保存状态函数绑定到cookie吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-27 16:10:49

我知道这并不能完全回答你所有的问题,但我最近做了这件事,主要是在服务器端。需要知道的关键是,即使使用AsyncTreeNodes,仍然可以在节点中检查children属性,该属性将包含另一个节点数组。

因此,在我的TreeLoader实例调用的TreePanel URL函数中,我确保保存正在加载到数据库中的节点的“路径”(重点是将此状态保持在服务器上)。所以我在数据库中保存了加载节点的级别和值,以及它的父节点。

为此,我向加载器beforeLoad事件添加了一个侦听器,并在加载程序的baseParams属性中设置了该信息。

然后,我这样做,以便加载程序调用的服务器上的相同函数(如果加载根节点的子节点)也会递归地调用自己来收集子节点(根据我在数据库中保存的内容)。因此,返回给根节点的加载程序的实际JSON如下所示:

代码语言:javascript
复制
[
    {
        "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的单击事件或其他东西来保存该信息。

当然,这不会处理我认为正在使用的复选框,但是如果您侦听了正确的事件,您可以对服务器进行回调,以保存此信息,然后将checked属性添加到初始JSON中的子节点。希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2918563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档