ExtJS の DataGrid で独自のソート処理を適用
Ext.data.SimpleStore の fields の定義で sortType に function を設定することで、独自のソート処理を適用することができる。function は、引数を 1つだけとり、戻り値にソートで比較するための数値を返すようにする。
なお、通常のソート処理は type で指定された型に基づき Ext.data.SortTypes で定義された asXXX(asInt等)が適用される。
また、レコードの同一フィールドの値に数値と文字列を混在させるような場合は、type 指定は auto にするか、設定しないようにする必要がある。
Ext.onReady(function() { var data = [ ['test1', 1], ['test2', 11], ['test3', 2], ['test4', 'ABC'], ['test5', 'ABC'], ]; var store = new Ext.data.SimpleStore({ fields: [ {name: 'title'}, {name: 'point', sortType: //文字列の場合は固定値で数値の場合は数値を返す function(s) { if(isNaN(s)) { return -1; } return Ext.data.SortTypes.asFloat(s); } } ] }); store.loadData(data);