具有特定 TreeStore 的 TreePanel

Posted

技术标签:

【中文标题】具有特定 TreeStore 的 TreePanel【英文标题】:TreePanel with an specific TreeStore 【发布时间】:2012-09-12 10:20:33 【问题描述】:

我有以下问题:

我正在构建一个包含人员数据的 TreePanel,但我不知道如何在不定义的情况下定义它的模型:叶子、cls 和文本属性。我不希望“名称”成为每个节点的节点文本。

我的模型定义如下:

Ext.define('People', 
     extend: 'Ext.data.Model',
     fields: [
         name: 'Name', type: 'string',
         name: 'Surname',  type: 'string',
         name: 'Email',       type: 'string'
         name: 'BirthDate',  type: 'string'
     ]
);

我的 TreeStore(目前是静态数据,但它将从 ajax 调用加载到服务器,该服务器将返回服务器人员模型列表)。显然我不想在我的服务器模型中定义叶子、文本和 cls 属性:

Ext.create('Ext.data.TreeStore', 
    root: 
        expanded: true,
        children: [
            
                "Name":"Juan", 
                "Surname":"Hoz", 
                "Email": "user@domain.com", 
                "BirthDate":"19801205"
            ,
            
                "Name":"Marta", 
                "Surname":"Hoz", 
                "Email": "user2@domain.com", 
                "BirthDate":"19831210"
            
    
);

我的 TreePanel 定义如下:

Ext.create('Ext.tree.Panel', 
    id: 'treePersonId',
    store: mystore,
    hideHeaders: true,
    rootVisible: false,
    title: 'Persons',
    collapsible: true,
    resizable:true
);

谁能帮我找到正确的方法?

非常感谢,

胡安

【问题讨论】:

【参考方案1】:
Ext.define('Person', 
    extend: 'Ext.data.Model',
    fields: [
        name: 'Name',
        type: 'string'
    , 
        name: 'Surname',
        type: 'string'
    , 
        name: 'Email',
        type: 'string'
    , 
        name: 'BirthDate',
        type: 'string'
    ]
);

Ext.require('*');

Ext.onReady(function() 
    var store = Ext.create('Ext.data.TreeStore', 
        model: 'Person',
        root: 
            expanded: true,
            children: [
                "Name": "Juan",
                "Surname": "Hoz",
                "Email": "user@domain.com",
                "BirthDate": "19801205"
            , 
                "Name": "Marta",
                "Surname": "Hoz",
                "Email": "user2@domain.com",
                "BirthDate": "19831210"
            ]
        
    );

    Ext.create('Ext.tree.Panel', 
        renderTo: document.body,
        store: store,
        hideHeaders: true,
        rootVisible: false,
        columns: [
            xtype: 'treecolumn',
            dataIndex: 'Name',
            flex: 1
        ]
    );
);

【讨论】:

非常感谢埃文。我们的方法是正确的,但是我仍然有问题说所有节点都是叶子以及如何指定节点的图标。

以上是关于具有特定 TreeStore 的 TreePanel的主要内容,如果未能解决你的问题,请参考以下文章

GXT 在 TreeStore 中重新排列数据数组索引

Sencha Touch 2:插入 TreeStore/NestedList

Ext JS 4:过滤 TreeStore

为啥 Extjs 4.0.7 TreeStore 会自动调用 http delete 方法?

ExtJS 4.1 TreeStore 中的不同节点类型

如何在 extjs 4 (mvc) 中过滤静态 treeStore