示例说明
适用场景:此宏示例只是透视分析方法调用增加列的一个简单示例,实际代码应用只符合当前的报表场景,并且必须是清单明细数据,存在两个字段以上(包含两个字段)的行区不支持进行汇总合计。若是有其他的场景要求,相关宏代码需要自行调整。
透视分析添加排序列。效果图如下:
设置方法
- 在“分析展现”节点下,创建一张透视分析。
- 选中透视分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为INSIGHT;事件为onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | INSIGHT | onRenderTable |
宏代码
代码块 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
function main(insight) {
//设置新增列的表头名,可修改项
columnName = "序号";
addSortColumn(insight, columnName);
}
//添加一列排序列
function addSortColumn(insight, columnName) {
var mainTable = insight.grid.mainTable; //获取表格对象
var columnFieldSize = insight.grid.columnFieldList.length - 1; //获取列区个数
var measureFieldSize = insight.grid.measureFieldList.length; //获取度量值个数
var headSize = columnFieldSize > 0 ? (measureFieldSize > 1 ? columnFieldSize + 1 : columnFieldSize) : 1;
var idx = 0;
var rowSpan = 1;
var trObj = mainTable.rows[0];
while (trObj != null) {
if (headSize > 1) {
headSize--;
var firstChild = trObj.firstChild;
var blankTd = firstChild.cloneNode(true);
trObj.insertBefore(blankTd, firstChild);
} else if (rowSpan > 1) {
rowSpan--;
} else {
var firstChild = trObj.firstChild;
var blankTd = firstChild.cloneNode(true);
if (idx == 0) {
var span = blankTd.firstChild.firstChild.nextSibling;
span.innerHTML = columnName;
} else {
blankTd.align = 'center';
blankTd.innerHTML = "" + idx;
}
idx++;
trObj.insertBefore(blankTd, firstChild);
rowSpan = firstChild.rowSpan;
}
trObj = trObj.nextSibling;
}
} |
资源下载
资源:migrate.xml