Extjs Grid MultiGrouping
HTML
<link rel="stylesheet" href="http://docs.sencha.com/extjs/4.1.3/extjs-build/resources/css/ext-all.css">
<script src="http://docs.sencha.com/extjs/4.1.3/extjs-build/ext-all-dev.js"></script>
`
JavaScript
Ext.define('Ext.data.StoreEx', {
extend: 'Ext.data.Store',
getGroups: function(requestGroupString) {
var me = this;
var records = this.data.items,
length = records.length,
groups = [],
pointers = {},
record,
groupStr,
group,
i;
var len = 0;
var fields = [];
this.groupers.each(function(item){
fields.push(item.property);
len++;
});
var arr_val = new Array(len);
var val, iter, new_per, grp_td;
iter = groups;
for (i = 0; i < length; i++) {
record = records[i];
new_per = false;
grp_td = "";
for(var j=0; j<len; j++){
val = record.get(fields[j]);
if (val != arr_val[j] || new_per){
iter.push({
name: val,
children: [],
last_grp: (j==len-1), // uses getGroupRows
grp_spn: me.col_len - j, // uses in getFeatureTpl. Suppose better approach can be found out
grp_td: grp_td // uses in getFeatureTpl. Suppose better approach can be found out
});
arr_val[j] = val;
new_per = true;
iter = iter[iter.length-1].children;
}
else {
iter = iter[iter.length-1].children;
}
grp_td = grp_td + "<td></td>";
}
iter.push(record);
iter = groups;
}
return groups;
}
});
Ext.define('Ext.grid.feature.GroupingEx', {
extend: 'Ext.grid.feature.Grouping',
alias: 'feature.groupingex',
getGroupRows: function(group, records, preppedRecords,...