ExtJs 4引用网格中的工具栏按钮

时间:2011-08-26 09:55:21

标签: reference extjs4 toolbar

我想在控制器内部定义一个ref,以便在选择更改时启用/禁用删除buitton。但是我没有把它弄好,所以getDelButton() - Method提供了未定义的。请帮忙......

控制器:

 refs:[
      { ref: 'tabPanel', selector: 'viewport > tabPanel' },
      { ref: 'grid', selector: 'tabPanel > usermanagementgrid' },
      { ref: 'delButton', selector: 'grid > button #delete'}
],

...

this.getDelButton().setDisabled(false);

查看定义:

dockedItems: [{
        xtype: 'toolbar',
        items : [ {
            xtype: 'button',
            id: 'delete',
            iconCls: 'drop-add',
            text: 'Add',
            tooltip: 'Press to add a new user.',
            action: 'addUser',
            scope: this,
        },

提前致谢...

3 个答案:

答案 0 :(得分:7)

您的选择器可能有3个问题:

  1. 组件和id选择器之间不应该有空格。使用:button#delete
  2. 正如nscrob所提到的,您可能需要使用gridpanel代替grid
  3. button不是grid的直接孩子。在这种情况下,它很可能是toolbar的直接孩子。这意味着你必须做更多的事情:gridpanel > toolbar > button#deletegridpanel button#delete
  4. 参考上面的#3,>选择器意味着父母的直接孩子。这意味着父母的孩子,而不仅仅是嵌套链下的某个组件。如果您只想在gridpanel中点按按钮,请使用gridpanel button。这将搜索所有gridpanel个孩子以及所有这些孩子,以查找与button匹配的任何内容。但请注意,以这种方式使用它将返回gridpanel中的所有按钮(除非您指定了id)。

    最后,在firebug中使用您的控制台将帮助您IMMENSELY。打开firebug,在控制台中可以运行命令。因此,加载网格并运行以下命令: Ext.ComponentQuery.query('gridpanel > toolbar > button#delete')并查看返回的内容。这样您就不必继续在代码中来回移动并刷新浏览器窗口。请记住,query()会返回一个数组。

答案 1 :(得分:0)

我有一个类似的问题,它原来是网格选择器,通常你选择器使用xtype,网格有网格或网格面板。尝试使用selector: 'gridpanel >button #delete'

答案 2 :(得分:0)

检查itemId属性。