【发布时间】:2018-04-05 00:27:58
【问题描述】:
我正在从 Vaadin 7 Table 迁移到 Vaadin 8 Grid。在 Vaadin 7 Table 中,我们使用了 IndexedContainer 或 Container with Property,并且可以使用 IndexedContainer.getItem(propertyId).getItemProperty(itemId).getValue(); 或 Container.getContainerProperty(itemId, propertyId).getValue() 访问表格单元格值。
Vaadin 8 Grid 的内容通过Grid.setItems(Collection<T>) 设置。我找到了如何访问列 - Grid.getColumns() - 和数据提供者 - Grid.getDataProvider()。但是我没有找到一种方法来组合它们并获取特定单元格的值...
在使用 Vaadin 8 Grid 时,有没有办法以类似的方式访问单元格值?
更新:
我目前正在尝试找出通过 Grid 方法访问数据的方法。目前我有 Vaadin 7 Table 代码,我们在其中以通用方式访问单元格值以将数据导出到例如Excel、CSV 或 PDF:
Table table = ...; /* Is passed in while initializing and is used as kind of black box in the exporter */
// Compiling cell values
Object[] visibleColumns = table.getVisibleColumns();
Container container = table.getContainerDataSource();
for (Object itemId : container.getItemIds())
{
for (Object propertyId : visibleColumns)
{
Property property = container.getContainerProperty(itemId, propertyId);
Object value = property == null ? null : property.getValue();
buildCell(value);
}
}
在 Vaadin 8 中,我有 Grid,我试图适应:
Grid grid = ...; // Passed in while initializing
// Compiling cell values
List visibleColumns = new ArrayList();
List columns = table.getColumns();
for(Iterator iterator = columns.iterator(); iterator.hasNext();)
{
Column column = iterator.next();
if (!column.isHidden())
{
visibleColumns.add(column);
}
}
// The Grid gets a Collection set as items, so I assume the rows should be ListDataProvider
ListDataProvider listContainer = (ListDataProvider)grid.getDataProvider();
Collection items = listContainer.getItems();
for (/* Now I should be able to get the stored values in each row, but I assume I need the data types ... */)
{
for (Column column : visibleColumns)
{
String propertyId = column.getId(); // Could be null if no ID is given
/* At least here I'd like to have access to the cell value */
}
}
【问题讨论】:
-
这个单元格值是做什么用的?
-
提供一些代码,您只能通过
Grid方法访问和使用这些数据。一些 onSelected- / onClickListener? -
网格值用于以 XLS、CSV 或 PDF 格式导出。除此之外,请在下面查看我的最终解决方案。
标签: java vaadin8 vaadin-grid