Web UI フレームワークを使用した複数のレコード・フィールドからのソートのカスタマイズ

1 つのレコードの複数のフィールドを (例えば、レンダラーを使用することによって) 結合したデータを使用するテーブル列のソートをカスタマイズできます。 これは、Ext JS 2.2.1 と Ext JS 3.0.2 の両方で行うことができます。

このソートは、Ext.data.field クラスの sortType 関数を使用して実行します。 1 つの項目を sortType に渡す代わりに (フィールドの値)、3 つの項目が渡されます (フィールドの値、レコード、およびソート対象フィールド)。 この機能は、Ext.data.Store クラス内の sortData メソッドをオーバーライドして、フィールドの値とレコードおよびフィールドを渡すことによって提供されます。

ユーザーは、グリッドのストアを作成していないときに、グリッドの columnModel または columns の bindingData.sFieldConfig プロパティーで構成オプションとして sortType を渡すことができます。

例えば、グリッドでは以下の構成が可能です。

columns: [{
  dataIndex: 'airlines',
  bindingData: {
    sFieldConfig : {
      mapping : "airlines",
      sortType: this.sortTypeFn
    }
  }
}]

ここで、 this.sortTypeFn は、画面 JavaScript ファイルで次のように定義されています。

sortTypeFn: function(val, rec, fld){
              return val + rec.get('airlinenumber');    
              // computing the value based on value of field (airlines) and 
              // value of 'airlinenumber' field
          }”