extjs3.4:如何访问没有id / itemId的面板中的项目

时间:2014-11-18 14:52:44

标签: javascript extjs dynamic tree extjs3

我刚开始使用ExtJS 3.4版本。当没有分配id或itemId时,我不确定如何访问面板中的项目。我之前使用过Ext JS 4.2,但我现在需要使用3.4版本。

就我而言,我在这里使用边框布局。我在东部地区有一个树木面板,在中心区域有一个tabpanel。我想基于单击的树节点使用网格或表单动态更新中心区域。

这是我的tabpanel代码

{
                        xtype : 'tabpanel',
                        title : 'Center Panel',
                        width : 200,
                        region : 'center',
                        items:[gridpnl]
}

这是我尝试过的完整代码               First ExtJs页面                                                                                                     Ext.onReady(function(){

        Ext.namespace('Class');
        Class.create = function() {
            return this.init(config);
            }
        };

        Ext.namespace('FirstOOPS');
        FirstOOPS = Class.create();
        FirstOOPS.prototype = {
         init: function (config) {

                var store= new Ext.data.ArrayStore({
                fields: [{name: 'C1'},{ name: 'C3'}, {name: 'C5'}]
            });
            var myData= [['abcdC11','C3','C5'],['asdf','C3_asdf','C5_asdf']]
            store.loadData(myData);

            var gridpnl= new Ext.grid.GridPanel({
                layout: 'fit',
                height: 500,
                width: 500,
                store: store,
                columns:[
                       {header: "C1", dataIndex: 'C1'},
                       {header: "C3", dataIndex: 'C3'},
                       {header: "C5", dataIndex: 'C5' }
                       ]
            });

            var mainPanel = new Ext.Panel({
            layout : 'border',
            items : [
    {
        region: 'east',
        collapsible: true,
        title: 'Navigation',
        xtype: 'treepanel',
        width: 200,
        autoScroll: true,
        split: true,
        loader: new Ext.tree.TreeLoader(),
        root: new Ext.tree.AsyncTreeNode({
            expanded: true,
            children: [{
                text: 'Grid',
                leaf: true
            }, {
                text: 'Form',
                leaf: true
            }]
        }),
        rootVisible: false,
        listeners: {
            click: function(n) {

                if(n.text=='Grid'){
                Ext.Msg.alert(n.text);

            }
             }
        }
    },{
                    xtype : 'tabpanel',
                    title : 'Center Panel',
                    width : 200,
                    region : 'center',
                    items:[gridpnl]

    }
    ]
    });
            new Ext.Viewport({
                layout : 'fit',
                items : [mainPanel]
            });   
        }
    };
    var firstObj = new FirstOOPS();
    });
    </script>
    </body>
    </html>

有人可以告诉我如何在没有id的情况下访问它,这样我就可以动态更新tabpanel或根据树节点点击创建新标签。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码访问tabpanel而不使用ID或项ID

this.up().items.items[1]

测试上面的代码我通过以下代码提醒选项卡面板的标题

      alert(this.up().items.items[1].title);

它会提醒标签面板的标题