1

我对 Ajaxfallbacktable 有问题 - 分页工作正常 - 数据加载 - 一切都很简单 - 即使默认排序也有效 - 但我不知道如何在每一列中添加 updown 按钮 - 这样我就可以排序无论如何我想要的桌子这是我的桌子

List<IColumn<logParsed>> columns = new ArrayList<IColumn<logParsed>>();

columns.add(new PropertyColumn<logParsed>(new Model<String>("Number of Entries"), "numberOfEntries") {
    @Override
    public String getCssClass()
    {
        return "numeric";
    }
});
columns.add(new PropertyColumn<logParsed>(new Model<String>("Last Seen"), "lastSeen"));
columns.add(new PropertyColumn<logParsed>(new Model<String>("Host Name"), "hostName") {
    @Override
    public String getCssClass()
    {
        return "hostname";
    }
});
columns.add(new PropertyColumn<logParsed>(new Model<String>("Log Message"), "logMessage"));


logProvider<logParsed> LogProvider = new logProvider<logParsed>(logParsedDao.findAll());
final AjaxFallbackDefaultDataTable<logParsed> dataTable = new AjaxFallbackDefaultDataTable<logParsed>("table", columns, 
        LogProvider, 10) {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected Item<logParsed> newRowItem(String id, int index, IModel<logParsed> model) {
        return new OddEvenItem<logParsed>(id, index, model);
    }
};

/* add(new OrderByBorder("sortByHighest", "numberOfEntries", LogProvider)
{
    private static final long serialVersionUID = 1L;

    @Override
    protected void onSortChanged()
    {
       dataTable.setCurrentPage(0);
    }
}); */
add(dataTable);

这是我的数据提供者:

public class LogProvider<logParsed> extends SortableDataProvider{

/**
 * 
 */
private static final long serialVersionUID = 1L;
private LogParsedDao logParsedDao;





private List<logParsed> list =  new ArrayList<logParsed>();

public LogProvider(List<logParsed> sentList){

    setSort("numberOfEntries",SortOrder.DESCENDING);
    list = sentList;
}

public Iterator iterator(int first, int count) {

    //ArrayList<logParsed> newList = (ArrayList<logParsed>) logParsedDao.findAll();
    //Collections.sort(newList, comparator);
    Iterator<logParsed> iterator = null;

    try {
        if(getSort() != null) {
            Collections.sort(list, new Comparator<logParsed>() {
                private static final long serialVersionUID = 1L;

                    public int compare(logParsed sl1, logParsed sl2) {
                     int result=1;
                        PropertyModel<Comparable> model1= new PropertyModel<Comparable>(sl1, getSort().getProperty());
                        PropertyModel<Comparable> model2= new PropertyModel<Comparable>(sl2, getSort().getProperty());

                        if(model1.getObject() == null && model2.getObject() == null) 
                            result = 0;
                        else if(model1.getObject() == null) 
                            result = 1;
                        else if(model2.getObject() == null) 
                            result = -1;
                        else 
                            result = ((Comparable)model1.getObject()).compareTo(model2.getObject());

                        result = getSort().isAscending() ? result : -result;

                        return result;
                }
            });
        }

        if (list.size() > (first+count))
            iterator = list.subList(first, first+count).iterator();
        else
            iterator = list.iterator();
    } 
    catch (Exception e) {
        e.printStackTrace();
    }

    return iterator;

}

public int size() {
    // TODO Auto-generated method stub
    return list.size();
}

public IModel model(final Object object) {
    return new AbstractReadOnlyModel<logParsed>() {
        @Override
        public logParsed getObject() {
            return (logParsed) object;
        }
    };
}

}
4

1 回答 1

4

使用PropertyColumn接收排序属性的构造函数:PropertyColumn(displayModel, sortProperty, propertyExpression)

于 2012-04-11T03:11:52.143 回答