作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含数千条记录的网格。它工作得几乎没问题。当我以编程方式调用此方法时:
selectionModel.selectAll(true);
效果很好。我的脚本没有被卡住,因为这个 true
参数,根据文档,它会抑制任何选择事件。但是,当我通过标题复选框选择所有记录(选择和取消选择所有记录)时,我的脚本被卡住。我想,这是因为默认情况下选择事件不会被抑制。我试图找到一个配置,它全局抑制选择事件,但找不到它。所以,我的问题是如何解决这个问题?如何全局抑制网格 selModel
中的选择事件?
最佳答案
您可以使用覆盖 onHeaderClick
来处理网格CheckboxModel的方法。
在 this Fiddle ,我使用相同的方法 onHeaderClick
创建了一个演示。
代码片段
Ext.application({
name: 'Fiddle',
launch: function () {
var store = Ext.create('Ext.data.Store', {
fields: ['number'],
data: (() => {
let data = [];
for (let i = 1; i <= 50000; i++) {
data.push({
'number': i
})
}
return data;
})()
});
Ext.create('Ext.grid.Panel', {
title: 'Demo',
store: store,
itemId: 'demogrid',
columns: [{
text: 'Number',
flex: 1,
dataIndex: 'number'
}],
height: window.innerHeight,
renderTo: Ext.getBody(),
selModel: {
checkOnly: false,
mode: 'SIMPLE',
onHeaderClick: function (headerCt, header, e) {
var me = this,
store = me.store,
isChecked, records, i, len,
selections, selection;
if (me.showHeaderCheckbox !== false && header === me.column && me.mode !== 'SINGLE') {
e.stopEvent();
isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
if (isChecked) {
console.time();
me.deselectAll(true);
console.timeEnd();
} else {
console.time();
me.selectAll(true);
console.timeEnd();
}
}
}
},
selType: 'checkboxmodel',
buttons: [{
text: 'Select All',
handler: function (btn) {
var grid = btn.up('#demogrid');
console.time();
grid.getSelectionModel().selectAll(true);
console.timeEnd();
}
}, {
text: 'Deselect All',
handler: function (btn) {
var grid = btn.up('#demogrid');
console.time()
grid.getSelectionModel().deselectAll(true);
console.timeEnd();
}
}]
});
}
});
关于javascript - ExtJS 6.具有抑制事件的网格复选框模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485167/
我是一名优秀的程序员,十分优秀!