找回密码
 立即注册

QQ登录

只需一步,快速开始

spring_li

注册会员

3

主题

16

帖子

39

积分

注册会员

积分
39
spring_li
注册会员   /  发表于:2024-9-20 18:50  /   查看:898  /  回复:17

window.onload = function () {
  initHierarchyParentType ()

};

// 自定义层级结构
function initHierarchyParentType() {
  var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 0 });
  var dataManager = spread.dataManager();
  var taskTable = dataManager.addTable("Tasks", {
      data: initHierarchyChildData(),
      schema: {
          hierarchy: {
              type: 'Custom',
              column: 'id',
          parse: function (options) {
                console.log(111, options)
                  // parse the primary key "1.1.1" to "1.1"
                  // the returned value will be treated as parentId
                  let seg = options.data.id.split('.');
                  return seg.slice(0, seg.length - 1).join('.')
              },
              unparse: function (options) {
                  let parentIds, currentIndex = options.index, parentData = options.parentData, parentKey = parentData && parentData.WBSNumber;
                    if (parentKey) {
                        let sp = parentKey.split('.');
                        parentIds = sp;
                    } else {
                        parentIds = [];
                    }
                    parentIds.push(currentIndex + 1);
                    return parentIds.join('.');
              }
          },
          columns: {
              TaskName: { dataName: 'name' },
              TaskId: { dataName: 'id', isPrimaryKey: true }, // using primary key to indicate the hierarchy id optionally
          }
      }
  });
  var sheet = spread.addSheetTab(0, "HierarchyParent", GC.Spread.Sheets.SheetType.tableSheet);
  console.log(222,sheet)
  sheet.setDefaultRowHeight(40, GC.Spread.Sheets.SheetArea.colHeader);
  sheet.options.allowAddNew = true;

  taskTable.fetch().then(r => {
      var taskView = taskTable.addView('TaskView', [
          {
              value: 'TaskName', outlineColumn: true, width: "*" // this option indicates the column showing as outline column
          }
      ]);
      sheet.setDataView(taskView);
  })
}
function initHierarchyChildData() {
  var data = [
      {
          id: '1', name: "1"
      },
      { id: '2', name: '2' },
      { id: '1.1', name: "1.1" },
      { id: '1.1.1', name: '1.1.1' },
      { id: '2.1', name: '2.1' }
  ]
  return data;
}




17 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-23 09:35:05
沙发
您好!跟您确认下参考的demo是如下图所示的集算表自定义分组吗?

1727054709587.png673464355.png

我们运行了您提供的代码片段,并非出现您在问题描述中提到的“sheet是undefined”。我们使用的是17.1.5版本,请您排查下版本。同时,了解到下图所示的属性不正确,这是问题所在之处。

1727054810808.png748300475.png

具体地,如下图示是您在代码中为数据列绑定声明的对象属性名称,相应地,应该通过options.data.TaskId获取您想获取的id数据。

1727054937794.png954802246.png

修改之后,运行效果如下图所示:

集算表自定义分组.gif

您可以参考附件中的demo了解详情。如果如上图所示并非您想要的实现效果,需要您详细介绍下需求。

集算表自定义层级结构.html

7.19 KB, 下载次数: 25

回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-23 10:11:37
板凳
找到了原因是因为缺少<script
        src="http://cdn.grapecity.com/spreadjs/hosted/scripts/plugins/gc.spread.sheets.tablesheet.17.1.5.min.js"></script>
回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-23 10:40:07
地板
我想要做分组的功能必须要使用addSheetTab和addTable吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-23 11:37:36
5#
spring_li 发表于 2024-9-23 10:40
我想要做分组的功能必须要使用addSheetTab和addTable吗

集算表、报表、数据透视表、甘特图等都以插件的形式存在于SpreadJS中,当您需要使用这些特性时,只需将相应的依赖引入项目工程中即可。

Workbook:addSheetTab()用以在Workbook中创建集算表Sheet,DataManager:addTable()是集算表用于管理数据源的接口。分组与否,使用集算表时都需要这两个接口用以创建集算表Sheet和管理数据源。

如下图所示,官网教程中还演示了通过TableSheet:groupBy()设置分组,您可以参考以了解详情:
教程--https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/table-sheet/grouping/custom/purejs
TableSheet:groupBy()--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.TableSheet.TableSheet#groupby

1727061206220.png297471007.png
回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-23 14:54:03
6#
image.png838877258.png addTable的里面的这些参数说明去哪里能看到啊,我在api文档里找不到详细说明啊
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-23 17:34:40
7#
spring_li 发表于 2024-9-23 14:54
addTable的里面的这些参数说明去哪里能看到啊,我在api文档里找不到详细说明啊

官网产品文档中集锦了各种特性的使用介绍和详情,论坛中也有一些优秀的博客介绍,可以参考官网产品文档和论坛博客了解详情:

https://demo.grapecity.com.cn/sp ... heet/hierarchy-data
https://gcdn.grapecity.com.cn/showtopic-216329-1-1.html
回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-23 18:33:44
8#
本帖最后由 spring_li 于 2024-9-23 18:41 编辑

image.png122631835.png


finalPrice: { dataName: 'finalPrice', allowSort: false, allowFilterByValue: false, allowFilterByList: false, dataType: "formula",
            value: "IF(AND([@engQty], [@priceFormula]), [@engQty] * [@priceFormula], 0) "
          },


怎么判断engQty和都是纯数字


image.png697815551.png
回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-24 09:20:01
9#
image.png731351318.png 加了层级数据计算后,allAmount不会根据[@engQty] * [@finalPrice]的变化而变化,这个怎么做到同时可触发
回复 使用道具 举报
spring_li
注册会员   /  发表于:2024-9-24 10:13:20
10#
image.png95138548.png 另外使用summaryFields后初始化时没有触发计算,需要修改值才会纳入计算,未修改的都不计算,这个怎么设置
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部