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

fad*_*adh 5 reference toolbar extjs4

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

控制器:

 refs:[
      { ref: 'tabPanel', selector: 'viewport > tabPanel' },
      { ref: 'grid', selector: 'tabPanel > usermanagementgrid' },
      { ref: 'delButton', selector: 'grid > button #delete'}
],
Run Code Online (Sandbox Code Playgroud)

...

this.getDelButton().setDisabled(false);
Run Code Online (Sandbox Code Playgroud)

查看定义:

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

提前致谢...

Lit*_*eeX 7

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

  1. 组件和id选择器之间不应该有空格.使用:button#delete.
  2. 正如nscrob所提到的,你可能需要使用gridpanel而不是grid.
  3. button不是直接的孩子grid.toolbar在这种情况下,它很可能是直接的孩子.这意味着你必须做更多的事情:gridpanel > toolbar > button#delete或者gridpanel button#delete.

参考上面的#3,>选择器意味着父母的DIRECT CHILD.这意味着父母的孩子,而不仅仅是嵌套链下的某个组件.如果您只想在gridpanel当时使用按钮gridpanel button.这将搜索所有gridpanel孩子和所有孩子,找到匹配的东西button.但请注意,以这种方式使用它将返回所有按钮gridpanel(除非您指定id).

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


nsc*_*rob 0

我有一个类似的问题,结果是网格选择器,通常选择器使用 xtype 并且网格有 grid 或 gridpanel。尝试使用selector: 'gridpanel >button #delete'