请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

rchlz

注册会员

4

主题

22

帖子

74

积分

注册会员

积分
74
最新发帖
rchlz
注册会员   /  发表于:2018-9-9 20:37  /   查看:6957  /  回复:11
使用sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values这个方法后,依然没有做数据验证

11 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-10 10:22:32
沙发
这样的操作是只粘贴值,您复制到的单元格中是否设置有数据验证.
如果设置了,是否设置了spread.options.highlightInvalidData = true;
这个设置默认是false
回复 使用道具 举报
rchlz
注册会员   /  发表于:2018-9-10 10:53:49
板凳
单元格有设置数据验证,用spreadSheets设计器在模板中设计的,也设置了spread.options.highlightInvalidData = true; ,从本地excel复制到网页excel中没有做数据验证
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-10 15:49:47
地板
我按照您的方法试了,没能重现您的问题。
是这样,您将模板设置的导出ssjson上传一下。我这边帮您具体看一下
回复 使用道具 举报
rchlz
注册会员   /  发表于:2018-9-10 16:13:23
5#
能否上传一下你做的例子呢,我看下有哪些不一样,如果还不行,我就把文件上传上来
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-10 18:33:37
6#
就是设计器中设计一个数据验证,然后导出,在spreadjs中导入,然后设置spread.options.highlightInvalidData = true;
sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values 最后在Excel中复制,粘贴到数据验证的单元格中。
回复 使用道具 举报
rchlz
注册会员   /  发表于:2018-9-11 10:10:14
7#
附件是设计的模板,这是我写的代码,有按照你说的方式去写,但是复制的时候还是没有验证。还有复制的时候会报错误 image.png951962280.png 是什么原因呢
  1. <style scoped>

  2. </style>

  3. <template>
  4.     <div class="router-content">
  5.         <div class="layout-content">
  6.             <div :id="spreadParams.domId" style="width:100%; height:800px;border: 1px solid gray;"></div>
  7.         </div>
  8.     </div>
  9. </template>
  10. <script type="text/ecmascript-6">

  11. export default {
  12.     name: 'fillDetailTest',
  13.     data() {
  14.         return{
  15.             spreadParams: {
  16.                 domId: 'ss',
  17.                 sheetCount: 1,
  18.                 spread: null,
  19.             },
  20.         }
  21.     },

  22.     mounted() {
  23.         let spread = new GC.Spread.Sheets.Workbook(
  24.                 document.getElementById(this.spreadParams.domId),
  25.                 { sheetCount: this.spreadParams.sheetCount });
  26.         spread.options.allowContextMenu = false;
  27.         spread.options.allowUserDragFill  = false; //关闭拖拽
  28.         spread.options.defaultDragFillType = 3;//只复制值
  29.         spread.options.allowCopyPasteExcelStyle = false;
  30.         spread.options.highlightInvalidData = true; //验证

  31.         this.$.getJSON("static/data/demo/网点-现金收付业务.ssjson", "", (resp) => {
  32.             spread.fromJSON(resp);
  33.             var sheet = spread.getActiveSheet();
  34.             sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values;
  35.             
  36.             let cellDataAtEnter = null;
  37.             let validateStatus = true;
  38.             sheet.bind(GC.Spread.Sheets.Events.EditStarting, (error, info) => {
  39.                 if (!validateStatus) {
  40.                     info.cancel = true;
  41.                     return false;
  42.                 }
  43.                 cellDataAtEnter = sheet.getValue(info.row,info.col);
  44.             });
  45.             sheet.bind(GC.Spread.Sheets.Events.ValidationError, (error, info) => {
  46.                 validateStatus = false;
  47.                 sheet.setValue(info.row, info.col, cellDataAtEnter || null);
  48.                 const errorTitle = info.validator.errorTitle();
  49.                 const errorMessage = info.validator.errorMessage();
  50.                 alert(errorMessage);
  51.                 // this.$Modal.error({
  52.                 //     title: errorTitle,
  53.                 //     content: errorMessage,
  54.                 //     onOk: () => {sheet.setValue(info.row, info.col, cellDataAtEnter || null);validateStatus=true;},
  55.                 //     onCancel: () => {}
  56.                 // });
  57.             });
  58.             let spreadData = {};
  59.             sheet.setDataSource(new GC.Spread.Sheets.Bindings.CellBindingSource(spreadData));
  60.         });

  61.                
  62.     },
  63. }

  64. </script>
复制代码

demo2.ssjson

281.1 KB, 下载次数: 238

回复 使用道具 举报
rchlz
注册会员   /  发表于:2018-9-11 11:41:36
8#
复制数据验证找到问题了,要在模板加载后设置spread.options.highlightInvalidData = true;
sheet.options.clipBoardOptions = GC.Spread.Sheets.ClipboardPasteOptions.values,复制后,能否直接得到哪些复制后单元格数据格式错误,或者能否知道数据验证是否通过。
回复 使用道具 举报
rchlz
注册会员   /  发表于:2018-9-11 11:48:43
9#
还有个问题是,插入table后,table中整列的数据验证是如何设置的
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-11 18:48:24
10#
那只能循环去设置了
https://demo.grapecity.com.cn/Sp ... /basicDataValidator
这个demo中也是循环去进行设置验证的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部