java - 如何在没有模型类的情况下从对象在 GXT 中创建网格?

标签 java gwt extjs gxt

我们想要在 GXT 中创建一个网格,其中网格中的数据是 JSON 对象,它是从客户端触发的查询的输出。

查询非常随机,并且具有在不同表上操作的不同列,我们对此一无所知。

严格来说我们没有任何模型类来创建网格

如何解决这个问题。

提前致谢...

最佳答案

GXT 网格并不意味着那么通用,但它是可以做到的。这就是我的方法:

需要一些模型类来使用。由于您不知道它包含哪些数据,因此您也必须使该数据抽象化。如果您也不了解数据类型,可以使用 Map<Integer, String>如:列号,值。

收到数据后,您必须创建(或 reconfigure() )网格。解析 json 后,您知道它包含多少列(每个条目的值)和行(条目)。假设您将所有行保存在一个列表中,因此我们有一个 List<Map<Integer, String>> ,其中每个列表条目代表一行,包含从 columnNumber 到值的映射。那么你需要这样一个ValueProvider:

public class RowColumnValueProvider implements ValueProvider<Integer, String> {

    private final List<Map<Integer, String>> entries;
    private final int column;

    public RowColumnValueProvider(List<Map<Integer, String>> entries, int column) {
        this.entries = entries;
        this.column = column;
    }

    @Override
    public String getValue(Integer row) {
        return entries.get(row).get(column);
    }

    @Override
    public void setValue(Integer row, String value) {
        entries.get(row).put(column, value);
    }

    @Override
    public String getPath() {
        return String.valueOf(column);
    }
}

然后,您使用不同的 ValueProvider ( new ValueProvider(columnIndex) ) 创建 ColumConfig,创建 ColumnModel 并将其分配给您的网格。

关于java - 如何在没有模型类的情况下从对象在 GXT 中创建网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25461477/

相关文章:

java - 动态生成的 JavaScript 无法在 Chrome 或 IE 中执行,但可以在 Firefox 中执行

java - GWT 多分页(最好/最简单的方法)

java - GWT 中的运行时执行

javascript - ExtJS 动画计数器从 0 到 N

java - 使用 Comparator.reversed() 反转流的排序顺序

java - 更改日期格式并将其存储在 mysql 中的变量中

java - 如何在制作测验应用程序时点击提交按钮后锁定一个响应

javascript - 失去焦点时自动关闭 ExtJS 窗口

javascript - 过滤与值不匹配的存储记录

java - Primefaces photoCam 组件不渲染