我有这个使用Wicket的网页,它加载了一些带有一些标题的数据,然后是大量的行和相应的数据。
现在,我希望在点击其中一个标题时我的数据能够排序。从我在谷歌上发现的,SortableDataProvider是要走的路。但是我找到的每个例子都需要1个参数,而当我实现它时,它需要两个参数。怎么办?
我要分类的课程是:
public class SimpleDataView extends WebPage {
public SimpleDataView() {
addNumberOfRecords();
addHeadlines();
addRecords();
}
private void addNumberOfRecords() {
Data dataModel = getDataModel().getObject();
add(new Label("size", "Number of records: " + dataModel.numberOfRecords()));
}
private void addRecords() {
Data dataModel = getDataModel().getObject();
ListView records = new ListView("records", dataModel.getRecords()) {
@Override
protected void populateItem(ListItem item) {
item.add(new ListView("recordColumn", item.getModel()) {
@Override
protected void populateItem(ListItem item) {
item.add(new Label("value", item.getModel()));
}
});
}
};
add(records);
}
private void addHeadlines() {
Data dataModel = getDataModel().getObject();
ListView headlines = new ListView("headlines", dataModel.getHeaders()) {
@Override
protected void populateItem(ListItem item) {
item.add(new Label("headlineColumn", item.getModel()));
}
};
add(headlines);
}
private IModel<Data> getDataModel() {
IModel<Data> model = new LoadableDetachableModel<Data>() {
@Override
protected Data load() {
DataHandler dataHandler = new DataHandlerImpl();
return dataHandler.getDataFromSource();
}
};
return model;
}
}
答案 0 :(得分:0)
这是Wicket维基的一个基本示例。
https://cwiki.apache.org/confluence/display/WICKET/Simple+Sortable+DataTable+Example
如果您需要更多或更少的列,可以调整列。
答案 1 :(得分:0)
如果使用SortableDataProvider,则应该(在创建列时)在列的创建中定义sortProperty。每个可排序可过滤的列都有一个构造函数,可以手动定义sortProperty。 它应该与它指向的生成的SQL查询部分相同。