动态创建GWT CellTable

Ash*_*och 9 java gwt datagrid

我遇到了GWT CellTable的问题.我需要动态创建celltable,我没有实体(Bean)类这样做.我已经看过了celltable的所有例子,并且在没有实体类的情况下进行了很多搜索.

我需要根据存储在数据库中的一些元数据动态填充表.我能够创建表结构

考虑有两个类,一个是GRID,另一个是COLUMN,用于元数据和列定义.GRID将COLUMNS列表作为列定义

    Class GRID {
List<COLUMN> columns;
}

Class COLUMN {
  String columnName;
}
Run Code Online (Sandbox Code Playgroud)

现在我需要从数据库获取网格并循环列以填充单元格(列),如:

com.google.gwt.user.cellview.client.Column<String, String> textColumn = new Column<String, String>(
                        new EditTextCell()) {
                    @Override
                    public String getValue(String object) {
                        return object;
                    }
                };
Run Code Online (Sandbox Code Playgroud)

现在,我需要向celltable添加一些数据.但没有实体,没有例子如何填充不同的列.我试过自己的样子:( 考虑网格有3列)

List<String> data;

String a1 = "A1";
            String a2 = "A2";
            String a3 = "A3";

            data = new ArrayList<String>();
            data.add(a1);
            data.add(a2);
            data.add(a3);

final AsyncDataProvider<String> provider = new AsyncDataProvider<String>() {
            @Override
            protected void onRangeChanged(HasData<String> display) {
                updateRowData(0, data);
            }
          };
          provider.addDataDisplay(grid);
provider.updateRowCount(data.size(), true);
Run Code Online (Sandbox Code Playgroud)

我能够产生如下输出:

A1 A1 A1

A2 A2 A2

A3 A3 A3
Run Code Online (Sandbox Code Playgroud)

实际上输出应该只有一行

A1 A2 A3
Run Code Online (Sandbox Code Playgroud)

但未能这样做.

请帮忙.

Thankx,

问候,

Tho*_*yer 8

你可以代表你的"行"的List<String>情况下,你有你的参数从改变StringList<String>Grid,Column和数据提供者; 当然你必须打电话updateRowDataList<List<String>>,而不是打电话List<String>.

您还需要Column每列一个实例,从List<String>索引中取出值:

class IndexedColumn extends Column<List<String>, String>
   private final int index;
   public IndexedColumn(int index) {
     super(new EditTextCell();
     this.index = index;
   }

   @Override
   public String getValue(List<String> object) {
      return object.get(this.index);
   }
}
Run Code Online (Sandbox Code Playgroud)