1

誰かがユーザー定義の基準に基づいてストアを並べ替えるのを手伝ってもらえますか?

Ext.define('Role', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'role_id', type: 'int'},
        {name: 'role_name',  type: 'string'}
    ]
})

返されるrole_nameはadmin、user、read-only、superです。

読み取り専用、ユーザー、管理者、スーパー。

4

2 に答える 2

3

次のようにsort()メソッドを使用して並べ替えることができます。

Ext.define('Role', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'role_id', type: 'int'},
        {name: 'role_name',  type: 'string'}
    ]
})

var store = Ext.create('Ext.data.Store', {
    model: 'Role',    
    data: [             // non-sorted data
        [ 1, 'user' ],
        [ 2, 'super' ],
        [ 3, 'read-only' ],
        [ 4, 'admin' ]                
    ]
});

// sort the store
store.sort([{
    sorterFn: function(v1, v2) {
        var order = ['read-only', 'user', 'admin', 'super'],
            v1o   = order.indexOf(v1.get('role_name')),
            v2o   = order.indexOf(v2.get('role_name'));           

        return v1o < v2o ? -1 : 1;; 
    }
}]);

console.log(store.data);

ここで機能していることがわかります:http://jsfiddle.net/lontivero/wGc2D/4/

幸運を!

于 2012-12-11T01:00:06.630 に答える
1

これはドキュメントで説明されています。カスタムソートタイプを使用してください。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Field-cfg-sortType

// current sort     after sort we want
// +-+------+          +-+------+
// |1|First |          |1|First |
// |2|Last  |          |3|Second|
// |3|Second|          |2|Last  |
// +-+------+          +-+------+

sortType: function(value) {
   switch (value.toLowerCase()) // native toLowerCase():
   {
      case 'first': return 1;
      case 'second': return 2;
      default: return 3;
   }
}
于 2012-12-10T23:21:46.507 に答える