Ext.grid.column.Check CheckBox 本身而不是整个单元格区域的单击事件
Ext.grid.column.Check click event to the CheckBox itself not the whole cell area
有什么方法可以将检查列操作限制为仅检查框并限制在单元格区域。我从文档中复制的检查列的示例代码。
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'email', 'phone', 'active'],
data: [{
name: 'Lisa',
email: 'lisa@simpsons.com',
phone: '555-111-1224',
active: true
}, {
name: 'Bart',
email: 'bart@simpsons.com',
phone: '555-222-1234',
active: true
}, {
name: 'Homer',
email: 'homer@simpsons.com',
phone: '555-222-1244',
active: false
}, {
name: 'Marge',
email: 'marge@simpsons.com',
phone: '555-222-1254',
active: true
}]
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
height: 200,
width: 400,
renderTo: Ext.getBody(),
store: store,
columns: [{
text: 'Name',
dataIndex: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1
}, {
text: 'Phone',
dataIndex: 'phone'
}, {
xtype: 'checkcolumn',
text: 'Active',
dataIndex: 'active'
}]
});
请帮我解决这个问题。
此解决方案适用于从 4.2.0 到 4.2.6 的所有 ExtJS 版本。
Ext.define('CheckColumn', {
override: 'Ext.grid.column.' + (!!Ext.grid.column.Check ? 'Check': 'CheckColumn'),
processEvent: function(type, view, cell, recordIndex, cellIndex, e, record, row) {
var me = this,
key = type === 'keydown' && e.getKey(),
mousedown = type == 'mousedown';
if (mousedown && !Ext.fly(e.getTarget()).hasCls('x-grid-checkcolumn')) {
return !me.stopSelection;
}
me.callParent([type, view, cell, recordIndex, cellIndex, e, record, row]);
}
});
根据 Guiherme lopes 的回答,我在 beforecheckchange 中应用了修复程序。
beforecheckchange: function(me , rowIndex , checked , record , e , eOpts){
if(!Ext.fly(e.getTarget()).hasCls('x-grid-checkcolumn')){
return false;
}
return true;
}
有什么方法可以将检查列操作限制为仅检查框并限制在单元格区域。我从文档中复制的检查列的示例代码。
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'email', 'phone', 'active'],
data: [{
name: 'Lisa',
email: 'lisa@simpsons.com',
phone: '555-111-1224',
active: true
}, {
name: 'Bart',
email: 'bart@simpsons.com',
phone: '555-222-1234',
active: true
}, {
name: 'Homer',
email: 'homer@simpsons.com',
phone: '555-222-1244',
active: false
}, {
name: 'Marge',
email: 'marge@simpsons.com',
phone: '555-222-1254',
active: true
}]
});
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
height: 200,
width: 400,
renderTo: Ext.getBody(),
store: store,
columns: [{
text: 'Name',
dataIndex: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1
}, {
text: 'Phone',
dataIndex: 'phone'
}, {
xtype: 'checkcolumn',
text: 'Active',
dataIndex: 'active'
}]
});
请帮我解决这个问题。
此解决方案适用于从 4.2.0 到 4.2.6 的所有 ExtJS 版本。
Ext.define('CheckColumn', {
override: 'Ext.grid.column.' + (!!Ext.grid.column.Check ? 'Check': 'CheckColumn'),
processEvent: function(type, view, cell, recordIndex, cellIndex, e, record, row) {
var me = this,
key = type === 'keydown' && e.getKey(),
mousedown = type == 'mousedown';
if (mousedown && !Ext.fly(e.getTarget()).hasCls('x-grid-checkcolumn')) {
return !me.stopSelection;
}
me.callParent([type, view, cell, recordIndex, cellIndex, e, record, row]);
}
});
根据 Guiherme lopes 的回答,我在 beforecheckchange 中应用了修复程序。
beforecheckchange: function(me , rowIndex , checked , record , e , eOpts){
if(!Ext.fly(e.getTarget()).hasCls('x-grid-checkcolumn')){
return false;
}
return true;
}