2011-07-11 21 views
3

チーム - Extjs v。3xを使用していて、グルーピングストアを使用しているグループ全体を完璧に動作させていますが、実際のレンダリング方法はわかりません各グループの合計に基づいてグループ(基本レコードではない)GroupingStore各グループの合計で注文グループ

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アイテム)列グループ名

ここ

答えて

2

取り組んでいるサンプル:私は何をやったかhttp://jsfiddle.net/GzsDW/2/

は基本的に作成されますあなたが望むようにデータを整形して整列させます。私の例では、列名はindustry-countです。その列の値は、datachangedイベントでカウントされます。すべてが設定された後、applySortコールがあります。以上です。

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(); 
} 
+0

乾杯:

はここdatachangedイベントコードです!これは私が持っていた半関連の問題を解決しました。 – Jonas