找回密码
 立即注册

QQ登录

只需一步,快速开始

星光点

注册会员

14

主题

44

帖子

176

积分

注册会员

积分
176
星光点
注册会员   /  发表于:2021-11-11 09:42  /   查看:1742  /  回复:6
有什么方法可以判断单元格绑定是否重复,如图中红框所示,绑定了重复的字段。期望:绑定重复的情况下,提示不能重复绑定,或者也可以提供下其他的优化方案。
image.png142753295.png
image.png253904723.png

6 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-16 17:15:15
推荐
思路:
通过重写 GC.Spread.Sheets.CellRange.prototype.bindingPath 来修改绑定字段逻辑。
核心代码:
  1. var oldSetBindingPath = GC.Spread.Sheets.CellRange.prototype.bindingPath;
  2.         GC.Spread.Sheets.CellRange.prototype.bindingPath = function(a) {
  3.             var sheet = this.sheet;
  4.             var rc = sheet.getRowCount();
  5.             var cc = sheet.getColumnCount();
  6.             // 遍历单元格,查看是否该字段已设置。如果是,则弹出弹窗提示,并取消绑定该字段
  7.             for(var r = 0; r < rc; r++) {
  8.                 for(var c = 0; c < cc; c++) {
  9.                     var path = sheet.getBindingPath(r, c);
  10.                     if(path == a) {
  11.                         alert("该字段已绑定!请勿拖拽");
  12.                         return;
  13.                     }
  14.                 }
  15.             }
  16.             oldSetBindingPath.call(this, a)
  17.         }
复制代码
完整代码请查看附件demo。

defalut_mode.html

3.04 KB, 下载次数: 42

评分

参与人数 1满意度 +5 收起 理由
星光点 + 5

查看全部评分

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-11 13:46:36
沙发
您好,
关于此需求目前没有接口可以直接实现,
需要调研下是否有其他可实现的方案,
这需要一定的时间,本贴先做保留处理,
待有进展会在本贴回复您。
回复 使用道具 举报
星光点
注册会员   /  发表于:2021-11-11 14:06:14
板凳
Lynn.Dou 发表于 2021-11-11 13:46
您好,
关于此需求目前没有接口可以直接实现,
需要调研下是否有其他可实现的方案,

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-11 16:06:40
地板
有结果会在本贴通知您。
回复 使用道具 举报
星光点
注册会员   /  发表于:2021-11-16 18:03:45
6#
Lynn.Dou 发表于 2021-11-16 17:15
思路:
通过重写 GC.Spread.Sheets.CellRange.prototype.bindingPath 来修改绑定字段逻辑。
核心代码:

哇,谢谢版主!
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-16 18:10:46
7#
那本帖就结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部