最近我发现自己还需要将一些函数绑定到网格上的全选和取消全选操作。我对此的解决方案是扩展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'); }
}
}),
值得注意的是,除非您将 true 传递给扩展选择模型中的 selectall 和 deselectall 调用,否则网格和行上的 selectionChanged 和 select 侦听器也会触发。