使用 ShowPivotTableAction
ShowPivotTableAction
是一个特殊的操作,可以从扩展自 ListDataComponent
的组件中导出数据,例如 DataGrid 和 TreeDataGrid,以及透视表。
使用该操作最直接的方法是在 dataGrid
中定义并与按钮关联。
<dataGrid id="tipInfoesDataGrid"
dataContainer="tipInfoesDc"
minWidth="100px"
width="100%">
<actions>
<action id="showPivotTableAction" type="pvttbl_showPivotTable"/>
</actions>
</dataGrid>
也可以在视图控制器中编程式创建,然后与按钮关联:
@Subscribe
public void onInit(final InitEvent event) {
ShowPivotTableAction<TipInfo> showPivotTableAction =
actions.create(ShowPivotTableAction.ID);
showPivotTableAction.setTarget(tipInfoesDataGrid);
showManualSetPivotTableActionButton.setAction(showPivotTableAction);
showManualSetPivotTableActionButton.setText(
messages.getMessage(getClass(), "manualSetShowActionButton.text"));
}
ShowPivotTableAction
有两个导出数据的模式:
-
所有行:导出
DataGrid
或TreeDataGrid
中的所有行。 -
已选择行:仅导出
DataGrid
或TreeDataGrid
中选中的行。
如果没有选择行,则默认导出所有行。
UI 模式 的透视表会显示在一个新的 tab 中。默认情况下,会显示组件数据容器中的所有属性,但不包括:
-
Collection
(集合)类型的属性。 -
byte[]
(字符数组)类型的属性。 -
UUID
属性。 -
带 @SystemLevel 注解的属性。
如需排除某些属性或仅包含特定属性子集,请使用 PivotTableViewBuilder
Bean,其提供了流式 API 接口,可以在打开的视图中配置数据透视表组件。
实现自定义配置时,在 ActionPerformedEvent
事件监听器中处理:
@Subscribe("tipInfoesDataGrid.customShowPivotTableAction")
public void onCustomShowPivotTableAction(final ActionPerformedEvent event) {
PivotTableViewBuilder builder = getApplicationContext().getBean(
PivotTableViewBuilder.class, tipInfoesDataGrid);
Renderers renderers = new Renderers();
renderers.setSelectedRenderer(Renderer.TABLE);
renderers.setRenderers(List.of(Renderer.TABLE, Renderer.TABLE_BAR_CHART, Renderer.HEATMAP,
Renderer.ROW_HEATMAP, Renderer.COL_HEATMAP));
builder.withIncludedProperties(Arrays.asList("sex", "smoker", "day", "time")) (1)
.withRows(Arrays.asList("sex", "smoker"))
.withColumns(Arrays.asList("day", "time"))
.withRenderers(renderers)
.withItems(tipInfoesDataGrid.getItems().getItems()) (2)
.show();
}
1 | withIncludedProperties() 方法仅考虑需要显示包含的属性,忽略其他属性。如需排除特定属性,请使用 withExcludedProperties() 方法。 |
2 | 其他以 "with" 开头的方法可由于配置透视表的选项。包括 withHiddenFromAggregations() 、withHiddenFromDragDrop() 、withAggregationProperties() 等。 |
展示的透视表数据可以导出为 Excel(需要支持当前渲染器)。在打开的 tab 中有一个默认的按钮可以用于导出。
本页是否有帮助?
感谢您的反馈