将行名添加到 cde 表组件
Posted
技术标签:
【中文标题】将行名添加到 cde 表组件【英文标题】:Add row name to cde table component 【发布时间】:2016-06-27 15:15:55 【问题描述】:我的 Pentaho CDE 仪表板中有一个表格组件,数据源是 sql。我想做一张这样的桌子
enter image description here
我需要添加一列作为该表的行名,并在列标题的顶部添加一行。 我在这里找到了一个方法: Table Component SubColumns 添加标题,但是如何在其他列之前添加一列?
【问题讨论】:
【参考方案1】:我认为执行额外列部分的一种聪明方法是在从查询中检索到查询结果对象后修改它,以便您根据需要添加列和行。您可以在PostFetch
回调函数中执行此操作,该函数将查询结果对象作为第一个参数:
function yourTableComponentPostFetch(queryResult)
// Let's say you have an array of row names
var rowNames = ['Title1', 'Title2', ... ];
// Add a "title" column for every row
queryResult.resultset.forEach(function (row, idx)
// Push it at the beginning of the row array
row.unshift(rowNames[idx]);
);
// Change metadata description of columns to reflect this new structure
queryResult.metadata.unshift(
colName: 'Title',
colIndex: -1, // this makes sense when reindexing columns below ;)
colType: 'String'
);
// One last re-indexing of metadata column descriptions
queryResult.metadata.forEach(function (column, idx)
// The title added column will be 0, and the rest will rearrange
column.colIndex++;
);
唯一棘手的部分是关于修改元数据的部分,因为您正在有效地更改数据集的结构,并确保原地更新 queryResult 对象而不是仅仅更改其引用(queryResult = myNewQueryResult
不起作用) ,但我建议的代码应该可以解决问题。
【讨论】:
以上是关于将行名添加到 cde 表组件的主要内容,如果未能解决你的问题,请参考以下文章
将行数据从Angular Material表显示到另一个组件中