页面树结构

版本比较

标识

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

...

对电子表格报表进行回写时,经常会遇到如下这些需求。点击工具栏上的“添加行”按钮时,要求新插入行的某些单元格能自动赋值,比如让“序号”列值自增;或者“日期”字段自动插入当前系统时间;或者“信息录入人”字段自动插入当前登录用户名等。类似上述需求,皆可以参照如下方法进行设置。

本示例中,实现插入一行时,自动为序号赋值。

注:该方法适用于只插入一行数据的情况。

如需插入多行,可以网络搜索js代码生成UUID的方法,向单元格中插入UUID,即可保证插入数据不重复。

...

代码块
languagejs
linenumberstrue
function main(spreadsheetReport, editingCellPosition) {
    var row = editingCellPosition.row;
    var col = editingCellPosition.column;
    //执行sql,获取序号
    var newIdValue = getSqlResult();
    //为新增的一行序号单元格赋值
    
    //判断当前编辑的是否是"序号"所在的列,从0开始,所以B列的列序号是1
    if(col==1){
    spreadsheetReport.spreadsheetReportWriteBack.setWriteBackCellData(row + 1, col + 0, newIdValue, newIdValue);//此方法必须保证该单元格设置了填报属性
    }
};
/**
 * 执行SQL语句,获取结果集
 */
function getSqlResult() {
    var util = jsloader.resolve("freequery.common.util");
     var ret = util.remoteInvoke("DataSourceService", "getDataByQuerySqlexecute", ["DS.回写资源库_业务库", "select max(f_ContactID) + 1 as t from  contacts", 0, 10001000,true,false]);
    if (ret.succeeded && ret.result) {
        var data = ret.result.data;
        return data[0][0].value;
    }
};

...

  • 将数据值插入到到指定位置的回写单元格中:setWriteBackCellData(row, column, value, displayValue);
  • 根据事件参数,获取到当前在编辑单元格的位置:editingCellPosition: {row, column}。
  • 通过 SQL 语句获取插入值,请参考:宏代码中如何执行SQL语句

 

资源下载

 

报表资源:表sql:migrate.xml

相关表sql:huixie.sql