页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

类型

对象

事件

ClientSide

spreadsheetReport

onRenderReport

 


宏代码

代码块
languagejs
linenumberstrue
//引入资源包
var JMClientUtils = use("system.utils.JMClientUtils");
var SpreadsheetClientUtils = use("exts.utils.SpreadsheetClientUtils");
var SpreadsheetVerifyData = use("exts.utils.SpreadsheetVerifyData");

function main(spreadsheetReport) {
    //debugger;
    // 添加"数据校验"按钮
    SpreadsheetVerifyData.addVerifyReportDataButton(spreadsheetReport, doVerifyReportDataBalanceCallback);

    // 对"保存"方法重载,只有校验通过后才可以保存
    var writeBack = spreadsheetReport.spreadsheetReportWriteBack;
    writeBack.removeListener(writeBack.elem_btnSave, "click", writeBack.doSaveClick, writeBack);
    writeBack.addListener(writeBack.elem_btnSave, "click",
    function(e) {
        //debugger;
        if (doVerifyReportDataBalanceCallback(e, this)) {
            this.doSaveClick(e);
        }
    },
    writeBack);
};

// 执行数据校验工作,校验通过返回true,否则返回false
function doVerifyReportDataBalanceCallback(e, writeBack) {
    // debugger;
    var isSucceeded = true;
    var showMessage = "";
    var spreadsheetReport = this;
    if (writeBack) {
        spreadsheetReport = writeBack.spreadsheetReport;
    }

    // 规则1:E4 = E5 + E6
    var E4 = SpreadsheetClientUtils.getCellRealValue("E4", spreadsheetReport);
    var E5E6 = SpreadsheetClientUtils.getCellRealValue(["E5:E6"], spreadsheetReport);
    isSucceeded = (E4 == E5E6);
    showMessage = "规则1:E4 = E5 + E6,校验失败。\n" + [E4, " = ", E5E6].join("");
    SpreadsheetClientUtils.showVerifyDataResult(spreadsheetReport, showMessage, ["E4", "E5:E6"], isSucceeded);
    if (!isSucceeded) {
        return false;
    }

    // 规则2:E9 = E10 + E11 + E12
    var E9 = SpreadsheetClientUtils.getCellRealValue("E9", spreadsheetReport);
    var E10E11E12 = SpreadsheetClientUtils.getCellRealValue(["E10", "E11:E12"], spreadsheetReport);
    isSucceeded = (E9 == E10E11E12);
    showMessage = "规则2:E9 = E10 + E11 + E12,校验失败。\n" + [E9, " = ", E10E11E12].join("");
    SpreadsheetClientUtils.showVerifyDataResult(spreadsheetReport, showMessage, ["E9", "E10:E11", "E12"], isSucceeded, "green");
    if (!isSucceeded) {
        return false;
    }

    return isSucceeded;
};

...

代码块
languagejs
linenumberstrue
    // 添加"数据校验"按钮
    SpreadsheetVerifyData.addVerifyReportDataButton(spreadsheetReport, doVerifyReportDataBalanceCallback);

...


  • 对“保存”方法重载,只有校验通过后才可以保存。首先取消系统默认的事件处理函数,再绑定自定义的函数。
代码块
languagejs
linenumberstrue
    // 对"保存"方法重载,只有校验通过后才可以保存
    var writeBack = spreadsheetReport.spreadsheetReportWriteBack;
    writeBack.removeListener(writeBack.elem_btnSave, "click", writeBack.doSaveClick, writeBack);
    writeBack.addListener(writeBack.elem_btnSave, "click",
    function(e) {
        //debugger;
        if (doVerifyReportDataBalanceCallback(e, this)) {
            this.doSaveClick(e);
        }
    },
    writeBack);

...


  • 如下一段代码定义一条校验规则。首先利用 SpreadsheetClientUtils.getCellRealValue方法获取指定单元格或区域的数据,做平衡性判断,然后再调用 SpreadsheetClientUtils.showVerifyDataResult方法显示校验结果:失败了弹出提示对话框,并将所有单元格背景色高亮。

...