可能很奇怪,但旁边我认为这是一个常见的问题,我找不到任何谷歌搜索:我想在我的gwt应用程序中插入一个表格,其数据水平增长而不是行。 我的意思是我将拥有固定数量的行和动态数量的列,实际上是一个旋转90°的数据网格。 我找到了这段代码: https://code.google.com/p/gwt-data-binding/source/browse/trunk/src/ca/petersens/gwt/databinding/client/ui/DataGrid.java?r=21 但似乎远远不够标准,长期项目也无法控制。 它有什么更好的解决方案吗?
更新: 这个想法是有大量数据的滚动和延迟加载等数据网格优势......直接使用列作为行不是一个好的解决方案。
更新: 尝试我正在做的是扩展abstracthasdata来实现我自己的功能,但我不能用scollbar创建一个div!外部容器都是“100%”(假设我不能将它们设置为固定大小) 我对renderRowValues的覆盖会附加类似
的内容“” 和我的表数据和相关的标签关闭
但是这样的结果是没有滚动条发生,只有一个高宽的页面!
答案 0 :(得分:0)
您可以使用标准DataGrid,其数据类型设置为<String>
或<MyHeader>
,其中MyHeader
是表示行标题的枚举。您将此Enum的一组字符串或值添加到数据提供者。
您的第一列将是显示对象本身的TextColumn。然后,您可以使用addColumn
(或insertColumn
)方法添加代表您数据的其他列。类似的东西:
final ArrayList<MyObject> myObjects;
for (MyObject myObject : MyObjects) {
TextColumn textColumn = new TextColumn<HeaderEnum>() {
@Override
public String getValue(HeaderEnum header) {
for (MyObject myObject : MyObjects) {
if (myObject.getSomeProperty().equals(header.name()) {
return myObject.getAnotherPropertyAsString();
}
}
return null;
}
};
myGrid.addColumn(textColumn);
myGrid.setColumnWidth(textColumn, "100px");
}