有没有办法控制第一次单击网格标题时使用的默认排序顺序?假设,我有两列,一列是名称,另一列是下载。我想将名称设置为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 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);
}
});
在上面的代码中,它将检查列是否被下载,而不是反向排序结果。