2014-01-06 1 views
0

У меня есть столбец шаблона в моих GridPanel, содержащих URL:ExtJS 4.2.1 GridPanel - Показать/скрыть ссылку в колонке шаблона

{ 
     xtype: 'templatecolumn', 
     tpl: Ext.create('Ext.XTemplate', 
      '<a href="#" class="x-leave-request-edit">Edit</a>' 
     ) 
    } 

Когда пользователь наводит мышь на определенную строку в GridPanel, я хочу ссылка будет видимой:

listeners: { 
     'itemmouseenter' : function(gridpanel, record, item) { 
      var editLink = Ext.select(Ext.query('a.x-leave-request-edit', item, 'select', true)); 
      editLink.setVisible(true); 
     }, 
     'itemmouseleave' : function(gridpanel, record, item) { 
      var editLink = Ext.select(Ext.query('a.x-leave-request-edit', item, 'select', true)); 
      editLink.setVisible(false); 
     } 
    } 

Это прекрасно работает. Проблема в том, что по умолчанию я хочу, чтобы ссылки в tpl были невидимыми. Как я могу это достичь? Я попытался использовать аналогичный код, как указано выше, в onRender(), afterRender() и finishRender(), но Ext.query() всегда возвращает пустой массив.

ответ

1

Вместо всего этого query уродства, вы можете просто использовать:

item.down('.x-leave-request-edit').

Чтобы сделать его невидимым, просто добавьте display: none; в встроенный стиль.

return '<a href="#" style="display: none;" class="x-leave-request-edit">Edit</a>'; 
+0

По какой-то причине вызов item.down ('. X-leave-request-edit') не работает. Я попробовал item.down ('a.x-leave-request-edit'). Web Inspector говорит: TypeError: «undefined» не является функцией (оценка «item.down ('a.x-leave-request-edit') '). С другой стороны, ваше решение добавить дисплей: none; сделал. Благодарю. –

+1

А, это должно быть 'Ext.fly (item) .down()' –

+0

thx, это сработало. –

Смежные вопросы