找回密码
 立即注册

QQ登录

只需一步,快速开始

jin.ye

金牌服务用户

93

主题

198

帖子

769

积分

金牌服务用户

积分
769
jin.ye
金牌服务用户   /  发表于:2022-11-21 14:32  /   查看:1011  /  回复:8
企业微信截图_16690115576284.png352215880.png

能不能和线下的excel一样操作,插入的时候复制左边或者右边的样式

8 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 16:52:59
沙发
您好,

SpreadJS在设计上认为插入的行是新行,不应受其他的行样式影响,所以表现如您截图所示。
如果您想与Excel效果一致,可以监听行列变动事件(如ColumnChanged事件),对新行/列复制样式。
下方链接demo可以参考下:
https://demo.grapecity.com.cn/sp ... s/index.html?id=177

回复 使用道具 举报
AlexZ讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-23 15:10:06
板凳
从产品层面,作为一个通用的控件,会面临各种不确定性,那这个场景举例

可能碰到以下不同的情况:
  • 在某些行下面插入行,可能不需要复制西面的行
  • 是否复制上面的合并区域
  • 新插入的列是否复制右边的列
  • ... ...

因为有各种不同的用例,作为一个控件产品的设计是保证提供足够的 API 和接口,插入行 -> 复制样式? 这样的选择留给使用者去决定


具体的示例已经由上面的回帖提供
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:2022-11-24 13:36:16
地板
Lynn.Dou 发表于 2022-11-21 16:52
您好,

SpreadJS在设计上认为插入的行是新行,不应受其他的行样式影响,所以表现如您截图所示。

image.png634309081.png


image.png208374632.png

ColumnChanged并没有在绘制好了之后进入到这个方法
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-24 15:17:06
5#
jin.ye 发表于 2022-11-24 13:36
ColumnChanged并没有在绘制好了之后进入到这个方法

没太理解您的意思,截图来看触发了ColumnChanged方法吗?"有具体的demo吗,您结合代码详细描述下您的问题。
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:2022-11-25 14:13:55
6#
Lynn.Dou 发表于 2022-11-24 15:17
没太理解您的意思,截图来看触发了ColumnChanged方法吗?"有具体的demo吗,您结合代码详细描 ...

我的意思是在新增列之前就已经触发了ColumnChanged
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-25 16:28:50
7#
新增列之前做了什么操作,导致触发的ColumnChanged呢?您参考1楼demo是未能满足需求吗?
建议直接提供一个具体的demo,把您遇到的问题以及想实现的需求描述清楚,从目前提供信息来看没太理解您的问题。
回复 使用道具 举报
jin.ye
金牌服务用户   /  发表于:2022-11-25 17:03:50
8#
Lynn.Dou 发表于 2022-11-25 16:28
新增列之前做了什么操作,导致触发的ColumnChanged呢?您参考1楼demo是未能满足需求吗?
建议直接提供一个 ...

image.png188525084.png

插入--活动单元格右移,此时会触发ColumnChanged,在ColumnChanged事件中打断点的时候,活动单元格并没有右移


我的目的是想实现单元格右移之后,复制样式到新插入的区域中
image.png125230101.png
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-25 18:46:07
9#
活动单元格右移引起的新增列发生在ColumnChanged事件之后,可以加上setTimeout处理一下。
示例代码:
  1. sheet.bind(GC.Spread.Sheets.Events.ColumnChanged, function (e, info) {
  2.                 console.log(info);
  3.                 setTimeout(() => {
  4.                     console.log(sheet.getSelections())
  5.                     var intIndex = sheet.getSelections()[0].col;
  6.                     sheet.copyTo(0, intIndex + 1, 0, intIndex, sheet.getRowCount(), 1, GC.Spread.Sheets.CopyToOptions.style);
  7.                 }, 0);
  8.             });
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部