多选,取消选定Boundlist
Multiselect & deselect Boundlist
我必须使一个自定义的边界列表的形式,它的工作很好,当它有单一的选择和不取消选择。我如何告诉边界列表取消选择和多选?
不工作:
var mode = this.multiselect ? 'MULTI' : 'SINGLE';
var sm = bl.getSelectionModel(); // TODO
sm.setSelectionMode(mode);
sm.allowDeselect = this.deselect;
不工作(这是在一个扩展的FieldContainer):
var bl = Ext.create('Ext.view.BoundList', {
multiSelect: this.multiselect,
deselect: this.deselect,
//...
不确定你想要实现什么行为。默认情况下,多模式允许取消选择,在这种情况下,allowDeselect配置选项不适用。下面是Ext.selection.Model文档中的一段话:
allowDeselect: Boolean
允许用户取消选择DataView、List或Grid中的记录。仅适用于模式为'SINGLE'
如果我理解正确,您希望能够通过在多选择中简单单击取消选择唯一选定的记录。
试试这个代码:
// Allow deselecting the only selected record in MULTI mode with a simple click.
// Note that this will only happen when allowdeselect is true
Ext.override( Ext.selection.Model, {
selectWithEvent: function(record, e, keepExisting) {
var me = this;
switch (me.selectionMode) {
case 'MULTI':
if (e.ctrlKey && me.isSelected(record)) {
me.doDeselect(record, false);
} else if (e.shiftKey && me.lastFocused) {
me.selectRange(me.lastFocused, record, e.ctrlKey);
} else if (e.ctrlKey) {
me.doSelect(record, true, false);
// Mod Start
} else if (me.isSelected(record) && !e.shiftKey && !e.ctrlKey && me.selected.getCount() == 1 && me.allowDeselect) {
me.doDeselect(record, false);
// Mod End
} else if (me.isSelected(record) && !e.shiftKey && !e.ctrlKey && me.selected.getCount() > 1) {
me.doSelect(record, keepExisting, false);
} else {
me.doSelect(record, false);
}
break;
case 'SIMPLE':
if (me.isSelected(record)) {
me.doDeselect(record);
} else {
me.doSelect(record, true);
}
break;
case 'SINGLE':
// if allowDeselect is on and this record isSelected, deselect it
if (me.allowDeselect && me.isSelected(record)) {
me.doDeselect(record);
// select the record and do NOT maintain existing selections
} else {
me.doSelect(record, false);
}
break;
}
},
});
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- jquery点击函数select&取消选择
- 使用Jquery选择或取消选择ListView中的所有复选框
- 使用jquery选中/取消选中单个复选框
- 使用javascript取消隐藏和隐藏表单中的某些元素
- 如何销毁/删除/取消绑定SnapSVG.js
- 滚动然后捕捉到顶部而不是取消捕捉
- 取消绑定主干视图事件
- 如何取消object.prototypes javascript的一个函数
- 使用javascript在页面加载时取消选中所有复选框
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- jquery选中并取消选中所有操作
- IE11中的第二个调用取消了第一个Fetch API调用
- 如何知道使用socket.io订阅/取消订阅频道
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 如何在javascript中取消选择文本框
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- (取消)使用单独的复选框激活复选框列表
- 如何取消选择所选选项并将JqueryMobile中选择的值刷新为1st
- 多选,取消选定Boundlist