分组时无法对ExtJS DataGrid中的数据进行排序

时间:2011-06-01 22:32:25

标签: sorting extjs grouping

我正在使用ExtJS 3.3.0和一个使用JSON数据存储(Ext.data.GroupingStore)的数据网格。

当我没有按列分组时,我可以排序很好,但是当按列分组时,排序算法似乎崩溃了。

我有另一个数据网格,它进行服务器端排序(以及分组和分页),这很好用。比较两者之间的代码让我感到困惑,因为差异使得一个工作而另一个工作不起作用。

非常感谢提前。

    CW.App.FileGrid = {

    store : null,

    initComponent: function(){

        this.store = new Ext.data.GroupingStore({
            autoLoad:true,
            url:'/sites/files.js',
            groupField:'modified',
            // Sort by whatever field was just grouped by.  This makes the data
            // make more sense to the user.
            groupOnSort:true,
            remoteSort:false,
            remoteGroup:false,
            sortInfo:{
                field:'modified',
                direction:'DESC'
            },
            reader: new Ext.data.JsonReader({
                idProperty:'filename',
                root:'data',
                fields: [
                   'iconCls', 
                   {
                    name: 'modified',
                    type: 'date',
                    dateFormat:'timestamp'
                   },
                   'description', 'folder', 'filename',
                   'filesize', 'ext', 'dateGroup']
            })
        });

        // this.store.setDefaultSort('modified', 'DESC');

        Ext.apply(this, {
            store: this.store,
            loadMask:true,
            columns: [
                {
                    xtype:'actioncolumn',
                    items:[{
                        getClass:function(v,meta,rec){
                            return rec.get('iconCls');
                        }
                    }],
                    width:25
                },{
                    id:'filename',
                    header: "Filename", 
                    sortable: true, 
                    dataIndex: 'filename'
                },{
                    id:'ibmu',
                    header: "iBMU", 
                    width:50, 
                    sortable:true, 
                    dataIndex: 'folder'
                },{
                    id:'date',
                    header: "Date", 
                    width: 65, 
                    sortable: true, 
                    dataIndex: 'modified', 
                    renderer: Ext.util.Format.dateRenderer('Y-m-d h:i'),
                    groupRenderer:function(v,unused,r,rowIdx,colIdx,ds){
                        return r.data['dateGroup'];
                    }
                },{
                    id:'type',
                    header: "Type", 
                    width: 70, 
                    sortable: true, 
                    dataIndex: 'description'
                },{
                    id:'size',
                    header: "Size", 
                    width: 50,
                    sortable: true, 
                    dataIndex: 'filesize', 
                    renderer: Ext.util.Format.fileSize 
                },{
                    xtype:'actioncolumn',
                    items:[{
                        icon: '/img/fam/drive_disk.png',
                        tooltip: 'Download file',
                        handler: function(grid, rowIndex, colIndex){
                            var rec = store.getAt(rowIndex);
                            location.href = Ext.urlAppend('/ibmus/download/', Ext.urlEncode({
                                folder: rec.get('folder'),
                                filename: rec.get('filename')
                            }));
                        }
                    }]
                }
            ],
            autoExpandColumn:'filename',
            view: new Ext.grid.GroupingView({
                emptyText: 'No files found. Please wait up to 24 hours after activating your account for files to appear.',
                forceFit:true,
                groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Files" : "File"]})'
            }),

            frame:false,
            width: '100%',
            height: 250,
            collapsible: false,
            animCollapse: false
        });


        CW.App.AlarmGrid.superclass.initComponent.call(this);

    }

};

0 个答案:

没有答案