Java GWT中的排序单元格表列不工作
我试图对GWT2.6.0的单元格表中的一列进行排序,但它不起作用 这是我的示例代码Java GWT中的排序单元格表列不工作,java,gwt,Java,Gwt,我试图对GWT2.6.0的单元格表中的一列进行排序,但它不起作用 这是我的示例代码 patientsTable.addColumn(NameColumn, messages.surname()); patientsTable.setColumnWidth(0, "100px"); patientsTable.getColumn(0).setSortable(true); ListHandler<PatientDTO> columnSortHandler = new
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);
patientsTable.addColumn(NameColumn,messages.namname());
患者可选择。设置列宽(0,“100px”);
patientsTable.getColumn(0).setSortable(true);
ListHandler columnSortHandler=新ListHandler(
dataProvider.getList());
columnSortHandler.setComparator(名称列,
新比较器(){
@凌驾
公共整数比较(PatientTo o1,PatientTo o2){
如果(o1==o2){
返回0;
}
如果(o1!=null){
返回(o2!=null)?o1.getLastName().compareTo(o2.getLastName()):1;
}
返回-1;
}
});
patientsTable.addColumnSortHandler(columnSortHandler);
patientsTable.getColumnSortList().push(NameColumn);
试试看
试着这样做,我已经给出了工作示例
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);
}
});
NameColumn.setSortable(true);
patientsTable.addColumnSortHandler(新ColumnSortEvent.Handler(){
@凌驾
public void onColumnSort(ColumnSortEvent事件){
最后一列a=event.getColumn();
List newData=newarraylist(patientsTable.getVisibleItems());
Collections.sort(newData,newcomparator(){
公共整数比较(PatientTo o1,PatientTo o2){
//此处的代码用于对asc或desc顺序进行排序
}
});
Range Range=patientsTable.getVisibleRange();
int start=range.getStart();
patientsTable.setRowData(开始,新建数据);
}
});
在患者表
中设置数据时,请尝试使用与您使用的相同的列表
实例。由于两个列表中的差异,似乎没有调用sortHandler
ListHandler<PatientDTO> columnSortHandler = new ListHandler<PatientDTO>(patientList);
ListHandler columnSortHandler=新的ListHandler(patientList);
“但它不工作”。那不是很有帮助。有什么问题吗?您是否收到错误/异常?它根本就不排序吗?它是否按错误的顺序排序?它没有对列进行排序,并且没有错误或异常@BazBTW:请使用equals()
来比较对象,而不是=
。我已将==
替换为equals()
,但它仍然没有排序。如果有误解,很抱歉,我之前的评论只是一个注释,不是为了解决您的问题。我不明白你的代码为什么不起作用。你是否添加了其他列?是的,我添加了<代码>patientsTable.addColumn(firstNameColumn,messages.forename());可患者。设置列宽(1,“100px”);DateCell DateCell=新的DateCell(dtf);Column dateColumn=new Column(dateCell){@Override public Date getValue(patientdo对象){return object.getbirth();};patientsTable.addColumn(dateColumn,messages.birthday());可患者。设置柱宽(2,“100px”)代码>@andrei
ListHandler<PatientDTO> columnSortHandler = new ListHandler<PatientDTO>(patientList);