在每个组中按组合计分组存储订单组

时间:2011-07-11 21:05:38

标签: extjs

团队 - 我正在使用Extjs v.3x并使用分组存储完全分组工作,但我似乎无法弄清楚如何渲染实际组(而不是基础记录)在每组的总数。

requestGrid = new Ext.ux.SearchPageingGridPanel({
    height:500
    //,title:'Application User Listing'
    ,store: trackerStore
    ,columns: userColumns // or define inline via columns
    ,collapsible:false
    //,stateId : "requestsdffasdfd"
    ,header: true
    ,view: new Ext.grid.GroupingView({
        forceFit:true,
        showGroupName: true,
        enableNoGroups:false,
        enableGroupingMenu:false,
        startCollapsed: true,
        autoFill: true,
        groupMode: 'display',
        hideGroupedColumn: false,
        groupTextTpl: ' ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]}) {text}'
    })
    ,renderTo: 'grid-paneling'

});

以上是我使用GroupingView的代码,我想要做的是显示基于values.rs.lenght的组排序。

例如:如果我有3个小组。

(3项)列组名称 (6项)列组名称 (2项)列组名称

我想按此顺序显示。

(6项)列组名称 (3项)列组名称 (2项)列组名称

1 个答案:

答案 0 :(得分:2)

以下是工作示例:http://jsfiddle.net/GzsDW/2/

我所做的基本上是创建一个列,其数据格式化,就像你想要的那样排序。在我的示例中,列名称为industry-count。该列的值在datachanged事件中计算。设置完所有内容后,会有applySort来电。就是这样。

以下是datachanged事件代码:

datachanged: function() {
    var count = {};
    var field = this.groupField.split('-')[0];

    // count group values first
    this.data.each(function(r) {
        var v = r.get(field);
        count[v] = 1 + (count[v] || 0);
    }, this);
    // create string like 99999998|Value and put it into industry-count field
    this.data.each(function(r) {
        var v = r.get(field);
        r.data[this.groupField] = (99999999 - count[v]) + '|' + v;
    }, this);
    // sort by new values
    this.applySort();
}