代码之家  ›  专栏  ›  技术社区  ›  Sphvn Frebin Francis

extjs-保存treepanel的状态。

  •  1
  • Sphvn Frebin Francis  · 技术社区  · 15 年前

    TLDR 我想让extjs的treepanel记住它以前的设置。ExtJS3.3.1


    我以前在extjs-2.x.x上看到过这样的操作: See here on the extjs forums .
    但正如他们所看到的,他们几乎没有生命,线程在那里问这个问题或类似的,没有答复长达6个月。我想我会把它带到这里。

    我需要能够让我的TreePanel记住以前打开的文件夹和选中的框。它是异步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的save state函数绑定到cookie吗?

    1 回复  |  直到 11 年前
        1
  •  1
  •   SBUJOLD    15 年前

    我知道这并不能完全回答你所有的问题,但我最近做的这些工作大部分都是在服务器端完成的。关键是要知道,即使使用AsyncTreeNodes,您仍然可以在节点中指定 children 将包含另一个节点数组的属性。

    因此,在我的treepanel的treeloader实例调用的url函数中,我确保将要加载的节点的“路径”保存到数据库中(对我们来说,关键是在服务器上保持这种状态)。所以我把加载的节点及其父节点的级别和值保存在数据库中。

    为此,我在加载之前向加载程序添加了一个侦听器,并在加载程序的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中的子级。 希望这有帮助!

    推荐文章