页面树结构
转至元数据结尾
转至元数据起始


该宏示例在 V10.5上 验证通过

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

1. 示例效果

原有电子表格宏实现:https://wiki.smartbi.com.cn/pages/viewpage.action?pageId=51943252

  • 原效果: 选中行时,行不会高亮
  • 预期效果:选中行高亮显示

2. 操作步骤

  • 步骤一: 新建一个空白的自助仪表盘

  • 步骤二:  拖入"web电子表格",双击”web电子表格“进入编辑界面

  • 步骤三:数据如下,保存退出

  • 步骤四:鼠标右键进入宏管理页面

  • 步骤五:新建宏。事件:“ onAfterRender(组件渲染后)

  • 步骤六:编写宏代码实现效果

把下面宏代码复制到代码区域

function main(page: IPage, portlet: ITableSheetPortlet) {
    let originalBackgroundColors: string[] = [];
    let prevRow: ISheetRow;
     
    for (let rowIndex = 0; rowIndex < portlet.getRowCount(); rowIndex++) {
        let row = portlet.getRow(rowIndex);
        row.addEventListener('click', function (e: SheetEvent) {
            // 还原上次点击的单元格背景色
            if (prevRow) {
                for (let columnIndex = 0; columnIndex < portlet.getColumnCount(); columnIndex++) {
                    let cell = prevRow.getCell(columnIndex);
                    cell.setStyle({
                        'background-color': originalBackgroundColors[cell.getColumnIndex()]
                    });                   
                }
            }
            prevRow = row;
             
            // 设置点击的单元格的背景色
            for (let columnIndex = 0; columnIndex < portlet.getColumnCount(); columnIndex++) {
                let cell = row.getCell(columnIndex);
                // 单元格背景色备份
                originalBackgroundColors[cell.getColumnIndex()] = cell.getStyle("background-color");
                if (cell.getColumnIndex() > 2) {
                    break;
                }
                cell.setStyle({
                    'background-color': "#abe5fe"
                });                
            }
        });     
    }
     
}
  • 步骤七:点击 保存。重新访问报表,可看到效果已实现

3. 下载资源

选中行高亮.xml

  • 无标签