如何动态地将列添加到网格GXT?

时间:2016-02-26 12:53:19

标签: java gxt

我想在网格GXT上添加新列,我这样做了,但是当我尝试按此列排序网格时,所有数据都会被删除并显示:

  

IllegalArgumentException:property不能为null或为空

在此之后,我尝试将数据索引xxx设置为列配置,在这种情况下,我有另一个例外:

  

无法在名为

的网格商店属性中找到

这是我动态添加新列的代码:

@Override
    public List<ColumnConfig> getTableColumns() {
        List<ColumnConfig> tableColumns = super.getTableColumns();
        ColumnConfig downloadLink = new ColumnConfig();
        downloadLink.setRenderer(new GridCellRenderer() {
            @Override
            public Object render(ModelData modelData, String s, ColumnData columnData, int i, int i1, ListStore listStore, Grid grid) {
                if (modelData.get("uuid")!=null) {
                    Anchor anchor = new Anchor();
                    anchor.setHref(GWT.getModuleBaseURL() + "download?uuid=" + modelData.get("uuid"));
                    anchor.setName("name");
                    anchor.setText("Download");
                    return anchor;
                }else{
                    return "N/A";
                }
            }
        });
        downloadLink.setWidth(100);
        downloadLink.setHeader("Download");
//        downloadLink.setDataIndex("downloadLink");
        tableColumns.add(downloadLink);
        return tableColumns;
    }

如何使新列可以排序?

1 个答案:

答案 0 :(得分:1)

grid.reconfigure可用于更改列。

final ColumnModel<Stock> cm2 = new ColumnModel<Stock>(columns);
grid.reconfigure(store, cm2);