如何在CellTable GWT中使用空单元格对Date Column进行排序

时间:2014-12-12 13:03:32

标签: sorting date gwt celltable

我在GWT中有一个CellTable和一个日期列。但此列的单元格可能为空

enter image description here

我想按顺序向这个列添加排序。

enter image description here enter image description here

如果列完全是空的,我不需要对表进行排序。

我写了比较器

public class RegDateComparator implements Comparator<DocList> {

    @Override
    public int compare(DocList o1, DocList o2) {
        if (o1 == o2) {
            return 0;
        }
        Date date1 = new Date();
        Date date2 = new Date();
        if (o1 != null) {
            DateTimeFormat dateFormat = DateTimeFormat
                    .getFormat("dd.MM.yyyy");
            if (!o1.getRegistrationDate().isEmpty()) {
                date1 = dateFormat.parse(o1.getRegistrationDate());
            } else {
                return -1;
            }
            if (!o2.getRegistrationDate().isEmpty()) {
                date2 = dateFormat.parse(o2.getRegistrationDate());
            } else {
                return -1;
            }

            return (o2 != null) ? date1.compareTo(date2) : 1;
        }
        return -1;
    }
}

但是我的代码并没有很好地排序。如果列为空,则排序仍然有效。 帮帮我)谢谢

1 个答案:

答案 0 :(得分:0)

我解决了我的问题

public class RegDateComparator implements Comparator<DocList> {

    @Override
    public int compare(DocList o1, DocList o2) {
        if (o1 == o2) {
            return 0;
        }
        DateTimeFormat dateFormat = DateTimeFormat
                .getFormat("dd.MM.yyyy");
        // Compare the filing date columns.
        if (o1 != null) {
            Date date1 = dateFormat.parse("01.01.1900");
            Date date2 = dateFormat.parse("01.01.1900");
            if (!o1.getRegistrationDate().isEmpty()) {
                date1 = dateFormat.parse(o1.getRegistrationDate());
            }
            if (!o2.getRegistrationDate().isEmpty()) {
                date2 = dateFormat.parse(o2.getRegistrationDate());
            }
            return (o2 != null) ? date1.compareTo(date2) : 1;
        }
        return -1;
    }
}

当我只有Date date1 = new Date()时,date1包含当前日期,因此它总是大于可能的日期,并且空日期总是在最后,我希望它们在开头。所以我把它解析为&#34; 01.01.1900&#34;。如果你愿意,你可以给我建议来改进我的代码。谢谢!)