ExtJS Grid renderer доступ к гриду и тулбару

Всем привет!

Имеется вопрос по ExtJS Grid.

В моем компоненте есть грид, по сути стандартный, на базе modExtra все сделано.

Наверху, над гридом — тулбар с несколькими полями поиска/фильтра, в том числе по автору.

Поле Автор отображается с использованием своего renderer (_renderUserCell):
{
    header: _('board_advert_createdby'),
    dataIndex: 'createdby',
    renderer: this._renderUserCell
}
...
_renderUserCell: function(val, cell, row, rowIndex, colIndex, store, view) {
    return  '<a href="javascript:void(0);" onclick="XXX">' + row.get('username') + '</a><br /><small>(' + val + ')</small>' : '';
}
Вопрос вот в чем… как мне в onclick=«XXX» установить в поле Автор значение ячейки и «нажать» Поиск? Хочу в общем в один клик по ячейке с именем автора фильтровать данные по пользователю.

Поясняющая картинка (нажмите для увеличения)
Наумов Алексей
25 января 2019, 14:31
modx.pro
1
1 771
0

Комментарии: 2

tolanych
27 января 2019, 15:46
+2
Всю магию делал в файле items.grid.js

в рендерере для ссылки добавил атрибут myattr, в котором помещается текст, который нужно кидать в searchbox и класс myClick, по которому элемент буду отлавливать
_renderUserCell: function(val, cell, row, rowIndex, colIndex, store, view) {
	return  '<a href="javascript:void(0);" class="myClick" myattr="'+row.get('pagetitle')+'">' + row.get('pagetitle') + '</a><br /><small>(' + val + ')</small>';
},
В getTopBar для field-search добавил id
...
xtype: 'mycomponent-field-search',
id: 'my-search-block',
width: 250,
...
(это стандартный поиск, тебе соответственно id добавлять в своё поле «Автор»)

в методе onClick от modExtra есть стандартная проверка на if (elem.nodeName == 'BUTTON') {
после неё добавил
if (elem.nodeName == 'A' && elem.className == 'myClick') {
	search = Ext.getCmp('my-search-block'); //ищу блок поиска по id
	search.setValue(elem.getAttribute('myattr')); //в него ставлю поисковой текст
	search._triggerSearch(); //имитируем нажатие кнопки
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2