任何人都知道如何/或可能 - 创建一个具有列特定顺序的表;保存前的配置顺序 - 例如在DB中, 并在特定视图上传?我也想知道如何从POJOS类 - bean中生成这个列标题和内容。
有什么好主意吗?
答案 0 :(得分:8)
setVisibleColumns
Table::setVisibleColumns
执行双重任务:
致电Table::getVisibleColumns
查看当前订购。
这在以下内容中有详细描述:
基本上,您需要这样的代码来控制列顺序,并将bean实例列表设置为数据源。
代码未经过测试,只是演示。适用于Vaadin 6,但我认为与Vaadin 7相比没有显着变化。
table = new Table();
// Wrap your beans collection into vaadin data container. There are many
// types of them , check Book of Vaadin.
BeanItemContainer<Bean> container = new BeanItemContainer<Bean>(Bean.class)
container.addBean(new Bean());
// Set collection of your beans as data source.
// Columns will be created for each property, vaadin uses reflection.
table.setContainerDataSource( container );
// You can select to display only properties you want, not all.
// Order matters. You can get columns list from any source - for example
// store in your DB.
table.setVisibleColumns( new Object[] {"prop1", "prop2"} );
// You can set column headers (by default vaadin will set them same as bean
// properties names). Order matters, should match above order.
table.setColumnHeaders( new String[] {"Property 1", "Property2"} );
答案 1 :(得分:2)
您可以允许用户在表中拖放列以在运行时重新排序它们。要启用此功能,请致电isColumnReorderingAllowed
。
当发生此类重新排序事件时,您可以使用listener通知。
用户的重新订购仅适用于此工作会话。如果您希望在将来的工作会话中维护用户的订单,则必须以某种方式保留所需的订单并在再次实例化表时应用订单。
如果替换表格的数据源,则会重置列顺序。您可以在更改之前获取当前订单,然后恢复。示例代码如下。
// Visible status & ordering.
java.lang.Object[] visibleColumns = this.exampleTable.getVisibleColumns();
// ------| Fresh Data |--------------
// Put fresh data into the Table.
this.exampleTable.setContainerDataSource( freshBeanItemContainer );
// ------| Restore Config |--------------
// Visible status & ordering.
this.exampleTable.setVisibleColumns( visibleColumns ); // Assumes the table has the same properties.
顺便说一句,与可见性和顺序一样,折叠也将使用新数据重置。您可能希望跟踪和恢复列折叠以及订购。