1

我在 extjs4 工作。我创建了树形面板视图为- 我的树视图

现在单击周围的节点,我正在检索它的 id,将其发送到服务器端并检索其相应的子节点。我正在以 json 格式获取此服务器端输出 -

{"children":[{"text":"Subgeo1","leaf":true,"expanded":false,"checked":false},{"text":"Subgeo2","leaf":true,"expanded":false,"checked":false}]}

所以现在我想将上面的 json 元素插入为节点“周围”的子节点。那么如何用这个新的孩子更新树存储呢?或者我如何动态添加孩子?请帮我

4

1 回答 1

0

这是我如何在树上添加元素的示例:

on_AddTreeNodes: function (win) {
    var _this = this;
    //your tree
    var tree = win.down('treepanel[name=main_tree]');
    //get tree root
    var root = tree.getRootNode();
    var first = root.firstChild;
    var _index = first.childNodes.length - 1;
    //adding folder
    first.insertChild(_index, { text: 'New folder name', leaf: false });
    var data = first.getChildAt(_index);
    Ext.Ajax.request({
        url: 'your url',
        method: 'GET',
        params: {
            //some params
        },
        success: function (objServerResponse) {
                //if success, you add your data from server into your tree
                            data.insertChild(data.firstChild, {
                               text: 'your leaf name',
                               leaf: true,
                               //your other params
                            });     

    });
    //sync your tree store
    tree.getStore().sync();
}

在我的示例中,我使用insertChild- 这种方法在我的树中添加子项。这里有一些信息可以帮助你:在 ExtJs 中使用树

在我看来我有

Ext.applyIf(me, {
            items: [
                {
                    xtype: 'treepanel',
                    name: 'main_tree',
                    title: 'Menu',
                    region: 'west',
                    collapsible: true,
                    rootVisible: false,
                    viewConfig: {
                        width: 230
                    },
                    store: Ext.create('Ext.data.TreeStore', {
                        root: {
                            expanded: true,
                            children: [
                                        {
                                            text: '',
                                            expanded: true,
                                            children: [
                                                        { text: 'Menu item', leaf: true, param1: 'somedata', param2: 'somedata', param3: 'somedata' },...

当我使用时:

data.insertChild(data.firstChild, {
                                   text: 'your leaf name',
                                   leaf: true,
                                   //your other params
                                }); 

取而代之的是'//你的其他参数'你从你的 JSON 中获取参数并像这样写:

data.insertChild(data.firstChild, {
                                       text: 'your leaf name',
                                       leaf: true,
                                       param1: 'jsondata', 
                                       param2: 'jsondata', 
                                       param3: 'jsondata'
                                    }); 
于 2013-06-11T10:36:10.503 回答