Недавно я обнаружил, что мне также необходимо привязать некоторые функции к операциям selectall и deselectall в сетке.Моим решением было расширить модель выбора checkboxmodel
, чтобы я мог подключить selectall
и deselectall
слушателей, которые запускают в нужное время.Самым простым способом сделать это было что-то вроде следующего.
Сначала объявите вашу новую модель и убедитесь, что она расширяет checkboxModel
Ext.define('My.selection.CheckboxModel', {
extend: 'Ext.selection.CheckboxModel',
onHeaderClick: function (headerCt, header, e) {
if (header.isCheckerHd) {
e.stopEvent();
var me = this, isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
me.preventFocus = true;
if (isChecked) {
me.deselectAll(); // Pass true as a parameter to prevent selectionchanged and select events firing
me.fireEvent('deselectall', me);
}
else {
me.selectAll(); // Pass true as a parameter to prevent selectionchanged and select events firing
me.fireEvent('selectall', me);
}
delete me.preventFocus;
}
}
});
Затем в вашей сетке добавьте следующее selModel
вобъект конфигурации:
selModel: Ext.create('My.selection.CheckboxModel', {
checkOnly: true, // you can add whatever normal configuration properties you want here
listeners: {
selectall: function () { console.log('selectAll'); },
deselectall: function () { console.log('deselectAll'); }
}
}),
Стоит отметить, что прослушиватели selectionChanged
и select
в сетке и строках также будут срабатывать, если вы не передадите true в вызовы selectall
и deselectall
врасширенный выбор модели.