4

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

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

所以我的网格定义看起来像:

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

getQueues 返回对象的集合,例如:

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

默认情况下,我想让网格按“占用”属性按降序排序。

从我看到的 Tapestry 文档中,该 Grid 具有属性sortModel,这似乎是正确的选择。但是,我无法很好地解释将其设置为的正确值。

4

1 回答 1

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" />
于 2013-09-23T14:05:47.997 回答