Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在GXT 2.2.5中单击网格标题列时如何设置默认排序方向_Java_Gwt_Grid_Gxt - Fatal编程技术网

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

Java 在GXT 2.2.5中单击网格标题列时如何设置默认排序方向,java,gwt,grid,gxt,Java,Gwt,Grid,Gxt,是否有方法控制首次单击网格标题时使用的默认排序顺序?假设我有两列,一列是name,另一列是downloads。我想在第一次单击网格标题时将名称设置为ASCorder,并将下载设置为DESC。这意味着当我第一次单击下载列标题时,它应该首先显示下载最多的内容 可以设置列的初始排序顺序吗?我得到了解决方案。 您可以使用Store Sorter设置初始分拣方向 store.setStoreSorter(new StoreSorter<TemplateContentItem>(){

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


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

我得到了解决方案。

您可以使用Store Sorter设置初始分拣方向

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);
        }
    });
store.setStoreSorter(新的StoreSorter(){
@凌驾
公共整数比较(存储,
TemplateContentItem m1、TemplateContentItem m2、,
字符串属性){
if(property.equals(“下载”)){
返回(超级比较(存储、m1、m2、属性)*-1);
}
返回super.compare(存储、m1、m2、属性);
}
});

在上面的代码中,它将检查列是否已下载,而不是按相反顺序排序结果。

我得到了一个不同的解决方案

我有一个类似的情况,我希望日期列在第一次单击时按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;
        }
    }
/**
*确保默认情况下日期列按降序排序
*/
@凌驾
HeaderClick上受保护的空心(网格,int列)
{
if(cm.getColumn(column).getDateTimeFormat()!=null)
{
SortInfo state=getSortState();
if(state.getSortField()!=null&&state.getSortField().equals(cm.getColumn(column.getId()))
{
super.onHeaderClick(网格、列);
返回;
}
其他的
{
this.headerColumnIndex=列;
如果(!headerDisabled&&cm.isortable(列))
{
doSort(列,SortDir.DESC);
}
}
}
其他的
{
super.onHeaderClick(网格、列);
返回;
}
}

在您的案例中,标题“排序顺序箭头”将位于错误的位置。此外,我认为把逻辑转移到分拣机是个坏主意。谢谢你纠正我。您可以使用Tom Teman的解决方案,这是一个很好的解决方案,我认为它也可以解决排序顺序箭头问题。