Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT中的排序单元格表列不工作_Java_Gwt - Fatal编程技术网

Java GWT中的排序单元格表列不工作

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

我试图对GWT2.6.0的单元格表中的一列进行排序,但它不起作用

这是我的示例代码

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);