GXT 3使用ListStore每个Set的值显示一行

时间:2014-11-24 04:26:24

标签: java gwt gxt

我正在使用Liststore将数据从DTO对象显示到网格中。 大多数对象属性都是字符串,可以很容易地显示出来。但其中一个参数是一组字符串 总而言之,我的目标如下:

public class MyObject{ 
    private String param1; // "val1"
    private String param2; // "val2"
    private Set<String> param3; // param3 contains "value3-1", "value3-2" and "value3-3"
    ...
}

我想在我的网格中为param3中的每个元素显示一行。 这样的事情:

param1 | param2 | param3
val1 | val2 | value3-1
val1 | val2 |值3-2
val1 | val2 | value3-3

您是否知道通过操纵ListStore来实现此目的的简单方法?

谢谢

1 个答案:

答案 0 :(得分:1)

ListStore中的每个项目对应于网格中的一行 - 因此,您需要将数据放入网格中。您应该能够轻松地遍历MyObject实例列表并将它们转换为MyObjectRow实例 - 甚至可以包含对“真实”实例的引用。 MyObject实例,便于编辑/更新。

但是,因为它是Set,所以你要小心 - 套装没有订单!这意味着您可能无法获得value3-1,value3-2 value3-3,但它们可以以任何顺序到达。强烈考虑使用List代替订单对你很重要。

然后使用List,MyObjectRow可能如下所示:

public class MyObjectRow {
    private MyObject wrapped;
    private int index;

    //...
    public String getParam1() {
        return wrapped.getParam1();
    }
    public String getParam2() {
        return wrapped.getParam2();
    }
    public String getParam3() {
        return wrapped.getParam3().get(index);
    }
}

然后,对于每个MyObject,创建N MyObjectRow,其中N是param3中的项目数。