Добавление прослушивателей событий в класс элементов XTemplate в сетке - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть столбец ячеек XTemplate в Grid Panel. Как добавить событие / прослушиватель щелчка, который применяется ко всем ячейкам в этом конкретном столбце? То, что я пробовал до сих пор, работает, но относится ко ВСЕМ кликам на ЛЮБОЙ ячейке в сетке. Я не могу манипулировать опцией делегата для фильтрации для определенного класса элемента.

Пока мой код:

columns:[

...

{
    xtype: 'templatecolumn',
    text: 'Approve2',
    flex: 1,
    dataIndex: 'Approved',
    align: 'center',
    sortable: false,
    tpl: '<input type="checkbox" class="approveCheckbox" />'
},

...

],
initComponent: function () {
    this.on('itemclick', this.storeCheckboxVal, this, { delegate: '.approveCheckbox' });
},

...

,
storeCheckboxVal: function (view, record, item, index, event) {
        alert(record.data['ID']);
}

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

AFAIK, delegate работает, только если вы назначаете обработчик для элемента DOM (не для компонента).Попробуйте этот код вместо:

initComponent: function () {
    this.mon(this.el, 'click', this.storeCheckboxVal, this, { delegate: '.approveCheckbox' });
},
1 голос
/ 27 февраля 2012

Возможно, вам потребуется изменить selType вашей сетки на cellmodel. После этого вы сможете прослушивать клик сетки. Кажется, это недокументировано, но я нашел его, используя Ext.util.Obersvable.capture(Ext.getCmp('my-grid-id'), console.log), что очень полезно знать.

0 голосов
/ 27 февраля 2012

Спасибо за ответы на все вопросы, однако мне удалось решить мою проблему с помощью этого решения: Ext JS on click click

...