Skip to content

Instantly share code, notes, and snippets.

@flexdevguy
Created September 15, 2016 14:26
Show Gist options
  • Select an option

  • Save flexdevguy/055ab6c01c59bc9ca5e4e41bb0f97f8a to your computer and use it in GitHub Desktop.

Select an option

Save flexdevguy/055ab6c01c59bc9ca5e4e41bb0f97f8a to your computer and use it in GitHub Desktop.
Extjs 6.0.2 ListView with Checkbox - Single and Multi selection
/**
* @class com.flexdevguy.views.CheckboxListSample
* @extends Ext.Container
* Description
*/
Ext.define('com.flexdevguy.views.CheckboxListSample', {
extend: 'Ext.Container',
title: 'ListView',
xtype: 'checkboxlistsample',
requires: [
],
config: {
},
layout: {
type: 'vbox',
pack: 'start',
align: 'stretch'
},
flex: 1,
items: [{
xtype: 'list',
itemId: 'myList',
emptyText: 'No Data Loaded',
mode: 'single',
store: {
fields: ['name', 'isSelected'],
data: [{
name: 'Gowtham',
isSelected: false
}, {
name: 'Alice',
isSelected: false
}, {
name: 'Bruce wayne',
isSelected: false
}, {
name: 'Abraham',
isSelected: false
}],
storeId: 'listStore'
},
listeners: {
itemTap : function(sender, index , target , record, e) {
//debugger;
if(record === null || record === undefined)
return;
//deselect item which is already selected in single selection mode
var isSelected = record.get('isSelected');
if (sender.getMode() == "SINGLE" && isSelected) {
sender.deselectAll();
// e.preventDefault();
// e.stopPropagation();
// e.stopEvent();
return false;
}
},
select: function(sender, record) {
// debugger;
record.set('isSelected', true);
//record.commit();
//sender.refresh();
},
deselect: function(sender, record){
//debugger;
record.set('isSelected', false);
}
},
itemTpl: '<input type="checkbox" onclick="return false" <tpl if="isSelected == true">checked</tpl> /> {name}'
}, {
html: '<br>'
}, {
id: 'samp',
xtype: 'button',
tpl: '<h1>{name}</h1><br><i>List Mode : {mode} Selection</i>',
data: {
name: 'Toggle Select Mode',
mode: 'single'
},
listeners: {
tap: function() {
var mode = this.parent.down('#myList').getMode();
mode = mode == "MULTI" ? "SINGLE" : "MULTI";
this.parent.down('#myList').setMode(mode);
this.parent.down('#myList').deselectAll();
var datas = Ext.getStore('listStore').getData();
Ext.each(datas.items, function(item) {
item.set('isSelected', false);
}, this);
this.setData({
name: 'Toggle Select Mode',
mode: mode
});
},
}
}, {
xtype: 'button',
text: 'Get Selections',
listeners: {
tap: function() {
var list = this.parent.down('#myList');
var selectedDatas = list.getSelections();
var selectedValues = [];
Ext.each(selectedDatas, function(item) {
selectedValues.push(item.getData()['name']);
});
Ext.Msg.alert("selections", selectedValues);
}
}
}]
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment