グリッドヘッダーを最初にクリックしたときに使用されるデフォルトの並べ替え順序を制御する方法はありますか?名前とダウンロードの2つの列があるとします。名前をASC
順序として設定DESC
し、グリッドヘッダーを最初にクリックしたときにダウンロードします。つまり、ダウンロード列ヘッダーを最初にクリックすると、最もダウンロードされたものが最初に表示されます。
列の初期ソート順を設定することはできますか?
私は別の解決策を得ました
同様の状況で、最初のクリックで日付列をDESCでソートし、最初のクリックで他の列をASCでソートする必要がありました。私は独自のGridViewを作成し、その中で次のようにonHeaderClick関数をオーバーライドしました。
/**
* Make sure that Date columns are sorted in a DESCENDING order by default
*/
@Override
protected void onHeaderClick(Grid<ModelData> grid, int column)
{
if (cm.getColumn(column).getDateTimeFormat() != null)
{
SortInfo state = getSortState();
if (state.getSortField() != null && state.getSortField().equals(cm.getColumn(column).getId()))
{
super.onHeaderClick(grid, column);
return;
}
else
{
this.headerColumnIndex = column;
if (!headerDisabled && cm.isSortable(column))
{
doSort(column, SortDir.DESC);
}
}
}
else
{
super.onHeaderClick(grid, column);
return;
}
}
私は解決策を得ました。
ストアソーターを使用して、最初のソート方向を設定できます。
store.setStoreSorter(new StoreSorter<TemplateContentItem>(){
@Override
public int compare(Store<TemplateContentItem> store,
TemplateContentItem m1, TemplateContentItem m2,
String property) {
if(property.equals("downloads")){
return (super.compare(store, m1, m2, property) * -1);
}
return super.compare(store, m1, m2, property);
}
});
上記のコードでは、結果を逆にソートするよりも、列がダウンロードされているかどうかをチェックします。