这是我正在努力的要求之一。
我有一个网格,其中selmodel为'Ext.selection.CheckboxModel'。要编辑网格行,我可以使用RowEditing或CellEditing插件。所以,在这里我会发生什么:
我不希望取消选择其他行。我应该能够单击/点击其中一个选定的行并仍然选择其余行。
当所有行都被选中时。
双击一行后,您可以看到其他行被取消选中。
答案 0 :(得分:5)
从beforedeselect
事件返回false将阻止取消选择。因此,对于单击情况,编辑时应该很容易防止取消选择。幸运的是,似乎beforedeselectevent
在beforeedit
事件之后被触发(至少在4.2.0中,在版本之间可能不稳定)。
使用行编辑:
plugins: [
Ext.create('Ext.grid.plugin.RowEditing', {
clicksToEdit: 1
,pluginId: 'editing'
})
]
,listeners: {
beforedeselect: function(sm, record) {
var plugin = this.getPlugin('editing');
return !plugin.editing;
}
// The checkbox selection column should probably not be editable, but
// apparently it is not accounted for... So we must prevent edition on
// this column, or you won't be able to deselect using the checkbox.
,beforeedit: function(editor, context) {
return context.colIdx !== 0;
}
}
使用单元格编辑:
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
,pluginId: 'editing'
})
]
,listeners: {
beforedeselect: function(sm, record) {
var plugin = this.getPlugin('editing');
// In 4.2.0 there is apparently a bug that makes
// plugin.editing always true
return !plugin.getActiveEditor();
}
,beforeedit: function(editor, context) {
return context.colIdx !== 0;
}
}
对于双击,您可以通过捕获取消选择事件并仅在编辑尚未开始时释放它来详细说明此策略。
plugins: [
Ext.create('Ext.grid.plugin.RowEditing', {
clicksToEdit: 2
,pluginId: 'editing'
})
]
,listeners: {
beforeedit: function(editor, context) {
return context.colIdx !== 0;
}
,beforedeselect: function(sm, record) {
var plugin = this.getPlugin('editing');
setTimeout(function() {
if (!plugin.editing) {
// The true prevents the event from firing again,
// and an infinite loop.
sm.deselect(record, true);
}
}, 200);
return false;
}
}
但是你必须猜测用户的双击延迟。太短,你可能会错过一些双击,而太长会导致取消选择的不愉快延迟。
答案 1 :(得分:1)
尝试将所选记录保留为变量,然后编辑该行。完成所有操作后,尝试重新选择所选行。
var selModel, selRows;
selModel = grid.getSelectionModel();
selRows = selModel.getSelection();
// after eediting, use the following
selModel.select(selRows);
答案 2 :(得分:0)
您必须将第二个参数作为true传递给select方法,以保留以前的选择:
selModel.select(rowsToSelect, true);
Sencha ExtJS文档供参考:
http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.selection.Model-method-select
希望它有所帮助!!