dexteryao 发表于 2022-1-28 09:51:15

在单元格中使用区域模板(RangeTemplate)


SpreadJS支持区域模板的功能,可以讲一个sheet的内容,当作模板显示在其他sheet的单元格中。


学习指南示例中演示了使用sheet binding使用区域模板,其实区域模板是一个特殊的CellType,GC.Spread.Sheets.CellTypes.RangeTemplate
类似CheckBox在所有单元格中都可以使用,下面演示如何在一个单元格中使用区域模板

可以在学习指南中直接修改代码并运行,查看效果
function initSpread(spread) {
    var renderSheet = spread.getActiveSheet();
    renderSheet.defaults.rowHeight = 207;
    var templateSheet = new GC.Spread.Sheets.Worksheet();
    templateSheet.fromJSON(templatesheetjson);
    spread.addSheet(1,templateSheet);
    templateSheet.setFormatter(2,2,"=IMAGE(@)");
    bindEvent(renderSheet, templateSheet);

    renderSheet.suspendPaint();
    renderSheet.setColumnWidth(0, 440)
    var celltype = new GC.Spread.Sheets.CellTypes.RangeTemplate(templateSheet);
    renderSheet.setCellType(0, 0, celltype);
    // 给区域模板单元格设置绑定路径detail
    renderSheet.setBindingPath(0, 0, "detail")
    // 构建数据源,detial是一个对象,属性和模板中绑定信息对应。
    var cellData = {
      "image": "https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/spread/source/images/avatar/63.png",
      "registered": {
            "date": "2006-11-30T07:33:34Z",
            "age": 12
      },
      "phone": "0563-6803149",
      "email": "reza.nissen@example.com",
      "fullName": "Reza,Nissen"
    }
    var dataSource = new GC.Spread.Sheets.Bindings.CellBindingSource({"detail": cellData})
    renderSheet.setDataSource(dataSource);
    renderSheet.resumePaint();
}单元格A1,设置了绑定路径detail, 数据源中有detail对象,内容为和目标中绑定信息一直的对象。
效果如图


页: [1]
查看完整版本: 在单元格中使用区域模板(RangeTemplate)