挂毯网格默认排序

时间:2013-09-23 12:34:59

标签: sorting grid tapestry

我想指定一个挂毯网格的默认排序列。

我知道我可以在服务器端对我的getter中的记录进行排序,但这似乎是不必要的努力,因为网格完全能够对它自己进行排序。

所以我的网格定义如下:

<t:grid source="queues" inPlace="true"> </t:grid>

getQueues返回对象集合,如:

public class Queue {
    public String getName();
    public float getOccupancy();
}

我想按照“占用”排序网格。默认情况下属于后代顺序。

从我看到的Tapestry文档中,Grid具有属性 sortModel ,这似乎是正确的选项。但是,我无法找到正确的值来设置它的正确解释。

1 个答案:

答案 0 :(得分:5)

您可以编写一个mixin来设置初始排序

@MixinAfter
public class DefaultSort {
    public enum Order { ASCENDING, DESCENDING };

    @Parameter(required=true, defaultPrefix="literal")
    private String sort;

    @Parameter(defaultPrefix="literal", value="literal:ascending")
    private Order order;

    @InjectContainer
    private Grid grid;

    @SetupRender
    void setupRender() {
        GridSortModel sortModel = grid.getSortModel();
        if (sortModel.getSortConstraints().isEmpty()) {
            sortModel.updateSort(sort);
            if (order == Order.DESCENDING) {
               // updateSort a second time for DESCENDING
               sortModel.updateSort(sort);
            }
        }
    }
}

<t:grid source="queues" inPlace="true" t:mixins="defaultsort" sort="occupancy" />