Wicket SortableDataProvider - 如何排序?

时间:2014-09-22 07:49:41

标签: sorting wicket

我有这个使用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;
}

}

2 个答案:

答案 0 :(得分:0)

这是Wicket维基的一个基本示例。

https://cwiki.apache.org/confluence/display/WICKET/Simple+Sortable+DataTable+Example

如果您需要更多或更少的列,可以调整列。

答案 1 :(得分:0)

如果使用SortableDataProvider,则应该(在创建列时)在列的创建中定义sortProperty。每个可排序可过滤的列都有一个构造函数,可以手动定义sortProperty。 它应该与它指向的生成的SQL查询部分相同。