如何在GXT 2.2.5中单击网格标题列时设置默认排序方向

时间:2012-08-22 08:32:34

标签: java gwt grid gxt

有没有办法控制首次单击网格标题时使用的默认排序顺序?假设,我有两列,一列是名称,另一列是下载。我希望将名称设置为ASC订单,并在第一次点击网格标题时下载为DESC。这意味着当我第一次点击下载列标题时,它应该首先显示最多下载。

是否可以设置列的初始排序顺序?

2 个答案:

答案 0 :(得分: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;
        }
    }

答案 1 :(得分:-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);
        }
    });

在上面的代码中,它会检查列是否下载,而不是反向排序结果。