ExtJs 4 ссылка на кнопку панели инструментов в сетке - PullRequest
5 голосов
/ 26 августа 2011

Я хочу определить ссылку в контроллере для включения / выключения кнопки удаления при изменении выбора. Но я не правильно понял, поэтому метод getDelButton () доставляет неопределенное значение. ПОЖАЛУЙСТА, помогите ...

Контроллер:

 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 ]

7 голосов
/ 26 августа 2011

Вероятно, у вас 3 проблемы с вашим селектором:

  1. Между компонентом и селектором идентификатора не должно быть пробела.Используйте: button#delete.
  2. Как уже упоминалось в nscrob, вам, вероятно, потребуется использовать gridpanel вместо grid.
  3. button НЕ является прямым потомком grid.В данном случае это, скорее всего, прямой ребенок toolbar.Это означает, что вы должны сделать что-то более похожее на: gridpanel > toolbar > button#delete ИЛИ gridpanel button#delete.

Что касается вышеприведенного # 3, селектор > означает ПРЯМОГО РЕБЕНКА родителя.Это означает буквально дочерний элемент родителя, а не просто компонент где-то вниз по цепочке вложений.Если вы просто хотите нажать кнопку в вашем gridpanel, используйте gridpanel button.Это будет искать среди всех детей gridpanel и среди всех этих детей, чтобы найти что-нибудь, что соответствует button.Однако имейте в виду, что использование этого способа вернет ВСЕ кнопки в пределах gridpanel (если, конечно, вы не укажете идентификатор).

Наконец, использование вашей консоли в firebug поможет вам НЕМЕДЛЕННО.Откройте firebug, и в консоли вы сможете запускать команды.Итак, загрузите сетку и выполните следующую команду: Ext.ComponentQuery.query('gridpanel > toolbar > button#delete') и посмотрите, что возвращается.Таким образом, вам не нужно постоянно возвращаться к своему коду и обновлять окно браузера.Имейте в виду, что query() возвращает массив.

0 голосов
/ 26 августа 2011

Проверьте свойство itemId .

0 голосов
/ 26 августа 2011

У меня была похожая проблема, оказалось, что это селектор сетки, обычно вы используете селектор xtype, и сетка имеет либо сетку, либо панель сетки.Попробуйте использовать selector: 'gridpanel >button #delete'

...