4

グリッドヘッダーを最初にクリックしたときに使用されるデフォルトの並べ替え順序を制御する方法はありますか?名前とダウンロードの2つの列があるとします。名前をASC順序として設定DESCし、グリッドヘッダーを最初にクリックしたときにダウンロードします。つまり、ダウンロード列ヘッダーを最初にクリックすると、最もダウンロードされたものが最初に表示されます。

列の初期ソート順を設定することはできますか?

4

2 に答える 2

2

私は別の解決策を得ました

同様の状況で、最初のクリックで日付列を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;
        }
    }
于 2012-08-22T16:00:01.267 に答える
-1

私は解決策を得ました。

ストアソーターを使用して、最初のソート方向を設定できます。

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);
        }
    });

上記のコードでは、結果を逆にソートするよりも、列がダウンロードされているかどうかをチェックします。

于 2012-08-22T09:22:49.860 に答える