找回密码
 立即注册

QQ登录

只需一步,快速开始

July_peng

注册会员

5

主题

12

帖子

43

积分

注册会员

积分
43
July_peng
注册会员   /  发表于:2021-7-6 09:26  /   查看:4038  /  回复:11
本帖最后由 Clark.Pan 于 2021-8-2 14:31 编辑

异常出现步骤:
1. 使用的官网案例:https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/pivot-table/pivot-panel/overview/react2. 在案例上加了两个SpreadSheets,每个spread都有自己的透视页

  1. <div class="sample-tutorial">
  2.                     <div class="sample-spreadsheets">
  3.                         <SpreadSheets workbookInitialized={spread=>this.initSpread(spread)}>
  4.                             <Worksheet>
  5.                             </Worksheet>
  6.                             <Worksheet>
  7.                             </Worksheet>
  8.                         </SpreadSheets>
  9.                     </div>
  10.                     <div class="sample-panel">
  11.                         <div id="panel"></div>
  12.                     </div>
  13.                 </div>
  14.                 <div class="sample-tutorial">
  15.                     <div class="sample-spreadsheets">
  16.                         <SpreadSheets workbookInitialized={spread=>this.initSpread(spread, 2)}>
  17.                             <Worksheet>
  18.                             </Worksheet>
  19.                             <Worksheet>
  20.                             </Worksheet>
  21.                         </SpreadSheets>
  22.                     </div>
  23.                     <div class="sample-panel">
  24.                         <div id="panel2"></div>
  25.                     </div>
  26.                 </div>
复制代码


3. 对每个透视页分别加上自己的透视面板

  1. initPivotTable(sheet, id) {
  2.      let myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 1, 1, GC.Spread.Pivot.PivotTableLayoutType.outline,     GC.Spread.Pivot.PivotTableThemes.light8);
  3.     myPivotTable.suspendLayout();
  4.     if(id) {
  5.         let panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel1", myPivotTable, document.getElementById("panel2"));
  6.         panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields + GC.Spread.Pivot.PivotPanelSection.area);
  7.      } else {
  8.         let panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel2", myPivotTable, document.getElementById("panel"));
  9.        panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields + GC.Spread.Pivot.PivotPanelSection.area);
  10.      }
  11.    ...
复制代码

4. 操作:控制第一个透视面板时,数据透视的结果却出现在第二个透视表中,控制错乱。
image.png852351989.png

完整jsx代码:
  1. import * as React from 'react';
  2. import * as ReactDOM from 'react-dom';
  3. import GC from '@grapecity/spread-sheets';
  4. import "@grapecity/spread-sheets-pivot-addon";
  5. import '@grapecity/spread-sheets-resources-zh';
  6. GC.Spread.Common.CultureManager.culture("zh-cn");
  7. import { SpreadSheets, Worksheet } from '@grapecity/spread-sheets-react';
  8. import './styles.css';

  9. const Component = React.Component;

  10. function _getElementById(id) {
  11.     return document.getElementById(id);
  12. }

  13. class App extends Component {
  14.     constructor(props) {
  15.         super(props);
  16.     }
  17.     render() {
  18.         return (
  19.             <div class='wrapper'>
  20.                 <div class="sample-tutorial">
  21.                     <div class="sample-spreadsheets">
  22.                         <SpreadSheets workbookInitialized={spread=>this.initSpread(spread)}>
  23.                             <Worksheet>
  24.                             </Worksheet>
  25.                             <Worksheet>
  26.                             </Worksheet>
  27.                         </SpreadSheets>
  28.                     </div>
  29.                     <div class="sample-panel">
  30.                         <div id="panel"></div>
  31.                     </div>
  32.                 </div>
  33.                 <div class="sample-tutorial">
  34.                     <div class="sample-spreadsheets">
  35.                         <SpreadSheets workbookInitialized={spread=>this.initSpread(spread, 2)}>
  36.                             <Worksheet>
  37.                             </Worksheet>
  38.                             <Worksheet>
  39.                             </Worksheet>
  40.                         </SpreadSheets>
  41.                     </div>
  42.                     <div class="sample-panel">
  43.                         <div id="panel2"></div>
  44.                     </div>
  45.                 </div>
  46.             </div>
  47.             
  48.         );
  49.     }
  50.     initSpread(spread, id) {
  51.         this.initSheets(spread);
  52.         let pivotLayoutSheet = spread.getSheet(0);
  53.         this.initPivotTable(pivotLayoutSheet, id);
  54.     }
  55.     initPivotTable(sheet, id) {
  56.         let myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 1, 1, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.light8);
  57.         myPivotTable.suspendLayout();
  58.         if(id) {
  59.             let panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel1", myPivotTable, document.getElementById("panel2"));
  60.             panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields + GC.Spread.Pivot.PivotPanelSection.area);
  61.         } else {
  62.             let panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel2", myPivotTable, document.getElementById("panel"));
  63.             panel.sectionVisibility(GC.Spread.Pivot.PivotPanelSection.fields + GC.Spread.Pivot.PivotPanelSection.area);
  64.         }

  65.         myPivotTable.options.showRowHeader = true;
  66.         myPivotTable.options.showColumnHeader = true;
  67.         myPivotTable.add("salesperson", "Salesperson", GC.Spread.Pivot.PivotTableFieldType.rowField);
  68.         myPivotTable.add("car", "Cars", GC.Spread.Pivot.PivotTableFieldType.rowField);
  69.         myPivotTable.add("date", "Date", GC.Spread.Pivot.PivotTableFieldType.columnField);
  70.         let groupInfo = { originFieldName: "date", dateGroups: [{ by: GC.Pivot.DateGroupType.quarters }] };
  71.         myPivotTable.group(groupInfo);
  72.         myPivotTable.add("total", "Totals", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);


  73.         myPivotTable.resumeLayout();
  74.         myPivotTable.autoFitColumn();
  75.     }

  76.     initSheets (spread) {
  77.         spread.suspendPaint();
  78.         let sheet = spread.getSheet(1);
  79.         sheet.name("DataSource");
  80.         sheet.setRowCount(117);
  81.         sheet.setColumnWidth(0, 120);
  82.         sheet.getCell(-1, 0).formatter("YYYY-mm-DD");
  83.         sheet.getRange(-1,4,0,2).formatter("$ #,##0");
  84.         sheet.setArray(0, 0, pivotSales);
  85.         let table = sheet.tables.add('tableSales', 0, 0, 117, 6);
  86.         for(let i=2;i<=117;i++)
  87.         {
  88.           sheet.setFormula(i-1,5,'=D'+i+'*E'+i)
  89.         }
  90.         table.style(GC.Spread.Sheets.Tables.TableThemes["none"]);
  91.         let sheet0 = spread.getSheet(0);
  92.         sheet0.name("PivotLayout");
  93.         spread.resumePaint();
  94.     }
  95. }

  96. ReactDOM.render(<App />, _getElementById('app'));
复制代码
完整css代码
  1. .wrapper {
  2.     height: 100%;
  3.    
  4. }
  5. .sample-tutorial {
  6.    position: relative;
  7.    height: 48%;
  8.    margin-bottom: 20px;
  9. }

  10. .sample-spreadsheets {
  11.   width: calc(100% - 300px);
  12.   height: 100%;
  13.   overflow: hidden;
  14.   float: left;
  15. }

  16. body {
  17.   position: absolute;
  18.   top: 0;
  19.   bottom: 0;
  20.   left: 0;
  21.   right: 0;
  22.   overflow: hidden;
  23. }

  24. .sample-panel {
  25.   float: right;
  26.   width: 300px;
  27.   padding: 12px;
  28.   height: 100%;
  29.   box-sizing: border-box;
  30.   background: #fbfbfb;
  31.   overflow: auto;
  32. }

  33. .gc-panel {
  34.   padding: 10px;
  35.   background-color: rgb(230, 230, 230);
  36. }

  37. #panel {
  38.   position: absolute;
  39.   right: 0;
  40.   width: 300px;
  41.   height: 100%;
  42.   top: 0;
  43. }

  44. #panel2 {
  45.   position: absolute;
  46.   right: 0;
  47.   width: 300px;
  48.   height: 100%;
  49.   bottom: 0;
  50. }

  51. #app {
  52.   height: 100%;
  53. }
复制代码



11 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-6 10:09:23
沙发
本帖最后由 Clark.Pan 于 2021-8-6 15:18 编辑

您好,问题已复现,这边调研下原因,有结果在本贴更新。
----------------------------------------------------------------

该问题最新进展V14.1.3版本已经进行了修复
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-14 18:26:45
板凳
您好,
该问题计划在V14.1.3修复,计划发布时间7月下旬
回复 使用道具 举报
July_peng
注册会员   /  发表于:2021-7-26 17:51:10
地板
Lynn.Dou 发表于 2021-7-14 18:26
您好,
该问题计划在V14.1.3修复,计划发布时间7月下旬

14.1.3更新后,获取不到pivotTables了。。。
复现场景: 在react引入14.1.3包,创建一个workbook, 增加一个sheet页,获取sheet.pivotTables,返回undefined
回复 使用道具 举报
July_peng
注册会员   /  发表于:2021-7-26 17:52:42
5#
July_peng 发表于 2021-7-26 17:51
14.1.3更新后,获取不到pivotTables了。。。
复现场景: 在react引入14.1.3包,创建一个workbook, 增加 ...

在哪里可以看到更新日志,如果API调用更新,是否有地方说明?版本更新后是否可以邮件通知?
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-26 18:11:18
6#
这个问题只是日常的修复bug,API没有需要更新的地方。
像1.3这样的小版本属于日常维护修复版本,是不会有邮件通知的,修复的bug后会通知相关用户进行更新,并不是全员覆盖。正常SP版本或者大版本是会有直邮通知的。
回复 使用道具 举报
July_peng
注册会员   /  发表于:2021-7-26 19:52:36
7#
July_peng 发表于 2021-7-26 17:51
14.1.3更新后,获取不到pivotTables了。。。
复现场景: 在react引入14.1.3包,创建一个workbook, 增加 ...

这个bug麻烦尽快看看,要上线了
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-27 09:57:08
8#
这个bug不是已经修复了吗?获取不到pivotTables应该是你代码的问题,我这边测试是没问题的。

demo (4).zip

1.96 KB, 下载次数: 100

回复 使用道具 举报
July_peng
注册会员   /  发表于:2021-7-27 10:40:46
9#
Clark.Pan 发表于 2021-7-27 09:57
这个bug不是已经修复了吗?获取不到pivotTables应该是你代码的问题,我这边测试是没问题的。

react+node包模式使用会复现详细使用代码在App.js中
步骤:
1. 下载附件包
2. 安装依赖,npm install
3. 启动项目,  npm start
4. 查看控制台log:  pivotTableManager undefined





test-spreadjs-react.zip

575.56 KB, 下载次数: 104

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-27 11:26:48
10#
你 pivot相关的包没有引用啊,如果是这样就算是换到以前的版本也一样用不了。sheet.pivotTables也一样是空。
image.png542342528.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部