ExtJS 5.0:网格remoteSort总是按默认的“分拣机”排序

时间:2017-08-24 19:13:28

标签: javascript sorting extjs grid store

我有一个EXTJS网格,它有一个缓冲存储。我在这家商店启用了remoteSort:true。有些列标记为可排序:true。但每次我点击任何列进行排序时,所做的后端调用只包括商店中提到的分拣机列和方向。防爆。即使我点击Col2或Col3进行排序,GET调用后端也总是包含'sort:col1,direction:desc',如'分拣机'中所述。

商店:

Ext.define('MyStore', {
  extend: 'Ext.data.BufferedStore',
 model  : 'MyModel'

  pageSize: 200,
  autoLoad: false,
  leadingBufferZone: 200,
  trailingBufferZone: 200,
  remoteSort: true,
  sorters: [{
    property: 'col1',
    direction: 'DESC'
  }],

  proxy: {
    type  : 'rest',
    format: 'json',
    url   : '/my_app/my_controller/list',
    extraParams: {
      someparam: '',
      otherparam: ''
    },
    reader: {
      type: 'json',
      rootProperty: 'data',
      totalProperty: 'totalCount'
    }
  }  
});

网格:

Ext.define('MyPanel', {
    extend: 'Ext.grid.Panel',
    requires: [
    'MyStore'
    ],
    initComponent: function() {
        this.store = new MyStore();
        this.callParent(arguments);
    },
    columns: [{
        text: 'Col1',
        dataIndex: 'col1',
        width: 150,
        sortable: true
    },{
        text: 'Col3',
        dataIndex: 'col3',
        width: 150,
        sortable: true
    },{
        text: 'Col3',
        dataIndex: 'col3',
        width: 250,
        sortable: true
    }]
});

如何启用此网格以按所单击的任何可排序列进行排序?

2 个答案:

答案 0 :(得分:1)

您已明确设置simpleSortMode,文档已经提到了问题所在。

您已经设置了第一个分拣机,按列单击排序会在其后面添加第二个分拣机,但只有第一个分拣机在simpleSortMode被激活时才会发送到服务器。

答案 1 :(得分:1)

ExtJS 5.0中的错误的临时修复。请参阅:https://www.sencha.com/forum/showthread.php?284772-remoteSort-doesn-t-work-with-BufferedStore

Ext.override(Ext.data.BufferedStore, { 
     sort: function(column, direction, mode){      
      this.getSorters().addSort(column, direction, mode);
      this.callParent(arguments);
    }
});