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

温馨提示

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

示例说明
如何在页面的公共参数后面增加一个“刷新”按钮,实现切换公共参数后不直接刷新,只有点击“刷新”按钮才进行刷新呢。实现方法,参考如下。


设置方法

1. 在资源定制节点下,创建一个页面,并把含有参数的报表放到页面中,把参数设置为公共参数;

2. 选中页面,右键选择 编辑宏 进入报表宏界面。

3. 在报表宏界面新建客户端模块。在弹出的新建模块对话框中选择对象为page;事件为onRenderPage;并把下面宏代码复制到代码区域; 


宏类型

类型

对象

事件

ClientSide

page

onRenderPage


宏代码

function main(page, pageContext) {
    //在公共参数列表的最后一个单元格后面新增加单元格:lastCell
    var paramTable = page.paramPanel.layoutTable;
    var i, cell, lastCell;
    //直接在参数最后一行插入列,并添加按钮
    for (i = 0; i < paramTable.rows.length; i++) {
        cell = paramTable.rows[i].insertCell(-1);
        if (i == paramTable.rows.length - 1) lastCell = cell;
    }
    // 在参数后面添加新一行并添加按钮,可以使用如下代码
    /*
     * var row = paramTable.insertRow();
     * row.style.height = "20px";
     * lastCell = row.insertCell( - 1);
     * lastCell.colSpan = paramTable.rows[0].cells.length;
     * lastCell.align = "center";
     */
    //新建button,并把这个button加到最后一个参数后面
    var btnElem = document.createElement("input");
    btnElem.type = "button";
    btnElem.title = "自定义按钮打开其它报表";
    btnElem.className = "queryview-toolbar-button";
    btnElem.setAttribute("style", "background:#FFFFFF url(img/querygrid/setting.gif) no-repeat left center;");
    //btnElem.style.background = "#FFFFFF url(img/querygrid/setting.gif) no-repeat left center;";
    btnElem.onclick = doClick;
    if (lastCell) {
        lastCell.appendChild(btnElem);
    }
    //定义button的Click事件
    function doClick() {
        page.pageUtil.refreshData();
    }
}


关键对象总结

  • 在公共参数列表的最后一个单元格后面新增加单元格:lastCell
  • 新建button对象,并添加到页面上:document.createElement("input")


注意事项

在上述步骤之外,还有最重要的不可忽略的一步工作要做。对页面上的每一张报表,都需要设置“切换参数后不自动刷新”。设置方法如下:

1、在“资源定制”节点下打开报表,在“参数设置”对话框上,将“切换参数后自动刷新报表”的复选框勾选去掉。

2、如果是“电子表格”报表,需要在 Excel 中打开该报表,在页面设置对话框上设置“切换参数刷新设置”选项为手动刷新。