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