我正在尝试对GWT 2.6.0的Cell表中的列进行排序,但它无法正常工作。
这是我的示例代码。
patientsTable.addColumn(NameColumn, messages.surname());
patientsTable.setColumnWidth(0, "100px");
patientsTable.getColumn(0).setSortable(true);
ListHandler<PatientDTO> columnSortHandler = new ListHandler<PatientDTO>(
dataProvider.getList());
columnSortHandler.setComparator(NameColumn,
new Comparator<PatientDTO>() {
@Override
public int compare(PatientDTO o1, PatientDTO o2) {
if (o1 == o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? o1.getLastName().compareTo(o2.getLastName()) : 1;
}
return -1;
}
});
patientsTable.addColumnSortHandler(columnSortHandler);
patientsTable.getColumnSortList().push(NameColumn);
答案 0 :(得分:0)
尝试
NameColumn.setSortable(true);
答案 1 :(得分:0)
尝试这样,我给出了工作实例,
NameColumn.setSortable(true);
patientsTable.addColumnSortHandler(new ColumnSortEvent.Handler() {
@Override
public void onColumnSort(ColumnSortEvent event) {
final Column a = event.getColumn();
List<PatientDTO> newData = new ArrayList(patientsTable.getVisibleItems());
Collections.sort(newData, new Comparator<PatientDTO>() {
public int compare(PatientDTO o1, PatientDTO o2) {
// code here to sort asc or desc order
}
});
Range range = patientsTable.getVisibleRange();
int start = range.getStart();
patientsTable.setRowData(start, newData);
}
});
答案 2 :(得分:0)
在List<PatientDTO>
中设置数据时,尝试使用您正在使用的patientsTable
实例。由于两个列表的不同,似乎没有调用sortHandler。
ListHandler<PatientDTO> columnSortHandler = new ListHandler<PatientDTO>(patientList);