我有一个具有以下属性的celltable(功能,Total,Pass,Fail),我有一堆行。我想添加支持按字母顺序按特征(按文本)排序或按失败排序(整数)。请注意,我不想按功能和表格排序!我想单独按他们排序。我如何实现这一目标?
可以使用addColumnSortHandler方法添加列排序处理程序,但是当我选择任何可排序的列时会触发此处理程序。如果我添加多个列排序处理程序,则会触发所有比较器。如何确保仅使用我单击的列对数据进行排序。即如果我单击功能标题,它应按字母顺序排序。如果我单击“失败”,那么它应该按失败排序等等。
任何帮助将不胜感激。谢谢
这是一段代码片段
final ListHandler<FeatureSummaryObject> failedColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
failedColSortHandler.setComparator(failedCol, new Comparator<FeatureSummaryObject>() {
@Override
public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
return o1.getFailed() - o2.getFailed();
}
});
table.addColumnSortHandler(failedColSortHandler);
failedCol.setSortable(true);
ListHandler<FeatureSummaryObject> featureColSortHandler = new ListHandler<FeatureSummaryObject>(dataProvider.getList());
featureColSortHandler.setComparator(featureCol, new Comparator<FeatureSummaryObject>() {
@Override
public int compare(FeatureSummaryObject o1, FeatureSummaryObject o2) {
return o1.feature.compareTo(o2.feature);
}
});
table.addColumnSortHandler(featureColSortHandler);
featureCol.setSortable(true);
此致
答案 0 :(得分:4)
我正在使用CellTable来显示文件列表(文件名,大小,Mime类型)。我可以使用以下代码单击标题时按列进行排序:
首先,我将列标记为可排序:
urlColumn.setSortable(true);
mimeColumn.setSortable(true);
sizeColumn.setSortable(true);
然后我为每列添加一个创建ColumnSortHandler,并像这样添加到表中:
// Add sorting for the Name column
ListHandler<Asset> urlSortHandler = new ListHandler<Asset>(dataProvider.getList());
urlSortHandler.setComparator(urlColumn, new Comparator<Asset>() {
public int compare(Asset o1, Asset o2) {
....
}
});
table.addColumnSortHandler(urlSortHandler);
// Add sorting for the Size column
ListHandler<Asset> sizeSortHandler = new ListHandler<Asset>(dataProvider.getList());
sizeSortHandler.setComparator(sizeColumn, new Comparator<Asset>() {
public int compare(Asset o1, Asset o2) {
....
}
});
table.addColumnSortHandler(sizeSortHandler);
// Add sorting for the Type column
ListHandler<Asset> mimeSortHandler = new ListHandler<Asset>(dataProvider.getList());
mimeSortHandler.setComparator(mimeColumn, new Comparator<Asset>() {
public int compare(Asset o1, Asset o2) {
...
}
});
table.addColumnSortHandler(mimeSortHandler);
我添加了一些日志记录并验证了正在触发的相应排序处理程序(这意味着如果我单击文件名,则只调用文件名排序处理程序)。
希望此示例代码有所帮助。如果没有,请提供一些示例代码,以帮助我们更好地诊断问题