在组合选择选项时,它会从网格中删除所有记录的选择,甚至在完成编辑时也会删除当前记录的选择。
我正在使用4.1。* Extjs,我试图覆盖celledit插件以及CheckboxModel。
是否有任何方法可以保留所选记录,除非我没有在复选框列中专门取消选择。
任何帮助将不胜感激,并提前致谢
答案 0 :(得分:1)
嘿,我把你的小提琴分开并做了一些改变,我认为可以解决你的问题: https://fiddle.sencha.com/#view/editor&fiddle/27ua
基本上我使用viewConfig
事件监听器向网格添加了cellclick
。 cellclick
事件首先发生;在事件处理程序中,我们检查cellIndex
参数的值,以确定单击哪个网格列来触发事件。然后我们将flag变量的值设置为cellIndex
值,这样我们就可以在选择模型的beforedeselect
事件处理程序中访问该值。最后,如果标志的值不是0,则从beforedeselect
返回false。
以下是代码:
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'email', 'region'],
data: [{
name: 'xyz',
email: 'xyz@xyz.com',
region: 'Arizona'
}, {
name: 'xyz',
email: 'xyz@xyz.com',
region: 'Alaska'
}, {
name: 'xyz',
email: 'xyz@xyz.com',
region: 'Alaska'
}, {
name: 'xyz',
email: 'xyz@xyz.com',
region: 'Alabama'
}]
});
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data: [{
"abbr": "AL",
"name": "Alabama"
}, {
"abbr": "AK",
"name": "Alaska"
}, {
"abbr": "AZ",
"name": "Arizona"
}]
});
var targetedCell = -1;
Ext.create('Ext.grid.Panel', {
id: 'theGrid',
viewConfig: {
listeners: {
cellclick: function(view, cell, cellIdx, record, row, rowIdx, eOpts) {
targetedCell = cellIdx;
}
}
},
title: 'data',
store: store,
width: 400,
renderTo: Ext.getBody(),
selModel: new Ext.selection.CheckboxModel({
checkOnly: true,
listeners: {
beforedeselect: function (thisSelModel, record, idx, eOpts) {
if(targetedCell != 0) {
return false;
}
return true;
}
}
}),
columns: [{
text: 'Name',
dataIndex: 'name',
}, {
text: 'Email',
dataIndex: 'email',
flex: 1,
}, {
text: 'State',
dataIndex: 'region',
editor: {
xtype: 'combo',
store: states,
displayField: 'name',
valueField: 'name',
listeners: {}
}
}],
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
}
});