在 Extjs 网格中,在组合框中的选项 select 中,它从网格中删除所有记录的 selection
In Extjs grid On options select from combo box, it removes selection of all records from grid
在选项的组合 select 中,它会从网格中删除 selection 所有记录,甚至在您完成编辑时也会删除 selection 当前记录。
- Select 来自 table 的所有行。
- 单击最后一列单元格,它会显示用于编辑单元格的组合框,同时所有 其他记录都会被删除selected 这是一个问题。
- 现在 select 组合框中的值并单击任何其他记录或某处,您会注意到 编辑的行也被删除 selected
我使用的是 4.1.* Extjs,我也尝试覆盖 celledit 插件以及 CheckboxModel。
有什么方法可以保留记录 selected 直到并且除非我没有特别从复选框列中删除select它。
如有任何帮助,我们将不胜感激,并提前致谢
嘿伙计,我分叉了你的 fiddle 并做了一些我认为可以解决你的问题的更改:
https://fiddle.sencha.com/#view/editor&fiddle/27ua
基本上,我使用 cellclick
事件侦听器向网格添加了 viewConfig
。 cellclick
事件首先触发;在事件处理程序中,我们检查 cellIndex
参数的值以确定单击哪个网格列来触发事件。然后我们将标志变量的值设置为 cellIndex
值,这样我们就可以在选择模型的 beforedeselect
事件处理程序中访问该值。最后我们 return 假 beforedeselect
如果标志的值不是 0.
代码如下:
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
}
});
在选项的组合 select 中,它会从网格中删除 selection 所有记录,甚至在您完成编辑时也会删除 selection 当前记录。
- Select 来自 table 的所有行。
- 单击最后一列单元格,它会显示用于编辑单元格的组合框,同时所有 其他记录都会被删除selected 这是一个问题。
- 现在 select 组合框中的值并单击任何其他记录或某处,您会注意到 编辑的行也被删除 selected
我使用的是 4.1.* Extjs,我也尝试覆盖 celledit 插件以及 CheckboxModel。
有什么方法可以保留记录 selected 直到并且除非我没有特别从复选框列中删除select它。
如有任何帮助,我们将不胜感激,并提前致谢
嘿伙计,我分叉了你的 fiddle 并做了一些我认为可以解决你的问题的更改: https://fiddle.sencha.com/#view/editor&fiddle/27ua
基本上,我使用 cellclick
事件侦听器向网格添加了 viewConfig
。 cellclick
事件首先触发;在事件处理程序中,我们检查 cellIndex
参数的值以确定单击哪个网格列来触发事件。然后我们将标志变量的值设置为 cellIndex
值,这样我们就可以在选择模型的 beforedeselect
事件处理程序中访问该值。最后我们 return 假 beforedeselect
如果标志的值不是 0.
代码如下:
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
}
});