代码之家  ›  专栏  ›  技术社区  ›  RaviPatidar

Extjs 6.2树列表动态更改选择

  •  1
  • RaviPatidar  · 技术社区  · 7 年前

    我正在使用树状图,我想在afterrender函数上动态更改我对导航列表的选择。

    Ext.create({
        xtype: 'treelist',
        reference: 'navigationTreeList',
        itemId: 'navigationTreeList',
        ui: 'nav',
        store: Ext.create('Ext.data.Store', {
            fields: [{
                name: 'text'
            }],
            root: {
                expanded: true,
                children: [{
                        text: 'Dashboard',
                        iconCls: 'x-fa fa-home',
                        rowCls: 'nav-tree-badge',
                        viewType: 'dashboardcei',
                        routeId: 'cei/dashboardcei',
                        leaf: true
                    },
                    {
                        text: 'Create Application',
                        iconCls: 'x-fa fa-send',
                        rowCls: 'nav-tree-badge',
                        routeId: 'cei/create-application',
                        viewType: 'create-application',
                        leaf: true
                    },
                    {
                        text: 'Application Status',
                        iconCls: 'x-fa fa-user',
                        routeId: 'cei/application-status',
                        viewType: 'application-status',
                        leaf: true
                    }
                ]
            }
        }),
        width: 250,
        expanderFirst: false,
        expanderOnly: false,
        listeners: {
            afterrender: function(tree) {
    
                var selection = tree.getStore().getData().items[1]; // bydefault "create application page should be open instead of dashboard"
                tree.fireEvent('selectionchange', tree, selection);
            }
        }
    });
    

    以上是我在渲染函数中的实验,在从树列表加载页面时打开“创建应用程序页面”默认值。它打开了页面,但树状图上的实际选择没有发生,就像选择仍然是旧的,这是我从上两天的问题,有人能帮我解决这个问题吗

    1 回复  |  直到 7 年前
        1
  •  2
  •   Narendra Jadhav    7 年前

    你需要使用 treelist.setSelection(record)) 动力学方法 selection 变更 treelist .

    根据您的要求,我创建了一个小 SENCHA FIDDLE 演示。希望这将帮助您或指导您实现您的要求。

    Ext.create('Ext.panel.Panel', {
        layout: 'hbox',
        title: 'Navigation tree list example',
        renderTo: Ext.getBody(),
        border: 1,
        height: window.innerHeight,
        viewModel: {
            selection: null
        },
        style: {
            borderColor: '#ccc',
            borderStyle: 'solid',
            borderWidth: '1px'
        },
        items: [{
            xtype: 'treelist',
            flex: 0.30,
            store: {
                root: {
                    expanded: true,
                    children: [{
                        text: 'Dashboard',
                        id: 'dashboard',
                        iconCls: 'x-fa fa-home',
                        rowCls: 'nav-tree-badge',
                        viewType: 'dashboardcei',
                        routeId: 'cei/dashboardcei',
                        leaf: true
                    }, {
                        text: 'Create Application',
                        id: 'createapp',
                        iconCls: 'x-fa fa-send',
                        rowCls: 'nav-tree-badge',
                        routeId: 'cei/create-application',
                        viewType: 'create-application',
                        leaf: true
                    }, {
                        text: 'Application Status',
                        id: 'appstatus',
                        iconCls: 'x-fa fa-user',
                        routeId: 'cei/application-status',
                        viewType: 'application-status',
                        leaf: true
                    }]
                }
            },
            listeners: {
                selectionchange: function (tree, node) {
                    this.up('panel').getViewModel().set('selection', node);
                }
            }
        }, {
            margin: '10 0 0 0',
            flex: 0.70,
            height: '100%',
            bind: {
                title: '{selection.text}'
            },
            style: {
                borderColor: '#ccc',
                borderStyle: 'solid',
                borderWidth: '1px'
            },
            itemId: 'rightPanel'
        }],
        buttons: [{
            text: 'Dashboard',
            name: 'dashboard',
            handler: function () {
                this.up('panel').doSetNode(this);
            }
        }, {
            text: 'Create Application',
            name: 'createapp',
            handler: function () {
                this.up('panel').doSetNode(this);
            }
        }, {
            text: 'Application Status',
            name: 'appstatus',
            handler: function () {
                this.up('panel').doSetNode(this);
            }
        }],
        //function will fire on bottom button click
        doSetNode: function (button) {
            var tree = this.down('treelist'),
                newSelection = tree.getStore().findRecord('id', button.name);
            tree.setSelection(newSelection);
        }
    });
    
    推荐文章