我对 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;
}
};
}
}