2016-09-05 6 views
-1

グリッド列に関してEXT 6で使用できるdoSort関数が見つかりませんでした。また、アップグレードノートで見つけられませんでした。それは私的な機能であるかもしれません、誰もdoSortがExt 4でやっていたのと同じことをするための代替案は何ですか?ExtJs 6 doSortメソッド

私は、代わりにソーターを使用するように

{ 
    text: 'columnText', 
    dataIndex: 'columnIndex', 
    sorter: me.sort 
} 

sort: function(v1,v2) { 
    ... 
} 

を試してみましたが、私は、V1で並べ替えを行うにはv2のパラメータをdataIndexかCOLUMNNAMEのようななめらかが見つかりませんでした。

私は、空のセルは、上記の後のソート

感謝を降順からなり、以下の後にソート昇順からなる空のセルを必要とする(それだけのモデルです)。

答えて

1

ここで問題は何ですか?モデルオブジェクトを使用して、ソートする列データを取得できます。ドキュメントから:

sorter: function(record1, record2) { 
    var name1 = record1.data.columnIndex; 
    var name2 = record2.data.columnIndex; 
    return name1 > name2 ? 1 : (name1 === name2) ? 0 : -1; 
} 

EDIT:あなたはすべての列のためにこれを書き換えたいいけない場合、あなたはこのようなトリックを行うことができます。今すぐ

sorter: (function(columnIndex){ return function(v1, v2){ me.sort(v1, v2, columnIndex);} })("column1") 

を、あなたは第三として、列名を取得することができますソート関数の引数

+0

私が試したが、あなたはフィドルに簡単な例を共有している場合、私は列コード – prsmax

+0

に追加するとき、それが呼び出されていません、 私は助けることができる。 – abeyaz

+0

Iは ソーター行うことができます:関数(V1、V2){ \t \t \t \t \t \t V1 = v1.data.columnIndexと、 \t \t \t \t \t \t v2 = v2.data.columnIndex; \t \t \t \t \t \tリターンV1> V2? -1:(v1 prsmax

0

列ではなくストアを並べ替える必要があります。それは、フレームワークの一部ではなくなっただけのことを、今

doSort: function(state) { 
    var tablePanel = this.up('tablepanel'), 
     store = tablePanel.store; 

    // If the owning Panel's store is a NodeStore, this means that we are the unlocked side 
    // of a locked TreeGrid. We must use the TreeStore's sort method because we cannot 
    // reorder the NodeStore - that would break the tree. 
    if (tablePanel.ownerLockable && store.isNodeStore) { 
     store = tablePanel.ownerLockable.lockedGrid.store; 
    } 
    store.sort({ 
     property: this.getSortParam(), 
     direction: state 
    }); 
}, 
/** 
* Returns the parameter to sort upon when sorting this header. By default this returns the dataIndex and will not 
* need to be overriden in most cases. 
* @return {String} 
*/ 
getSortParam: function() { 
    return this.dataIndex; 
}, 

、このコードはまだExtJSに6で働いている:今のところExtJSの4中doSort機能を見てみましょう。 「フレームワークに戻す」ことができます(オーバーライドなど)。もう一度やり直す必要があります。または、列イベントから関連する部品を直接使用することもできます。

columns:[{ 
    dataIndex:'ABC', 
    listeners:{ 
     headercontextmenu:function(ct, column) { 
      column.mySortState = column.mySortState=='ASC'?'DESC':'ASC'; 
      ct.up('grid').getStore().sort({ 
       property:column.dataIndex; 
       direction:column.mySortState 
      }); 
     } 
    } 
}] 
+0

こんにちは、headercontextmenuは、sortchangeとしても呼び出されません – prsmax

0

たぶん、あなたはこのようなモデルでは、それを定義する必要があります。

fields: [{ 
     name: "textField", 
     type: 'string', 
     //sortType: 'asInt' 
    }] 
関連する問題