请选择 进入手机版 | 继续访问电脑版

ycy

注册会员

1

主题

4

帖子

33

积分

注册会员

积分
33
最新发帖
ycy
注册会员   /  发表于:2020-1-19 15:42  /   查看:5196  /  回复:7
1金币
本帖最后由 ycy 于 2020-1-19 15:44 编辑

如果给sheet设置了默认的style,比如:
const defaultStyle = new GC.Spread.Sheets.Style();
defaultStyle.borderLeft = new GC.Spread.Sheets.LineBorder(
  '#d0d7e5',
  GC.Spread.Sheets.LineStyle.thin,
);
sheet.setDefaultStyle(defaultStyle);

这时候,想给单个cell画虚线边框(dotted, dashed),就画不上去:
sheet.getCell(0, 0).borderLeft(new GC.Spread.Sheets.LineBorder('#000', GC.Spread.Sheets.LineStyle.dotted));

但是如果画实线边框(如thin,medium,thick,double)就可以,边框类型是不是有优先级?
我想要设置了defaultStyle以后,依旧可以画出虚线边框怎么办?


最佳答案

查看完整内容

对于上面单元格设置的下边框实线,会影响下方单元格设置虚线的问题,我们会与研发同事反馈。 另外,SpreadJS 中设置网格线、边框、背景色、是与Excel的行为保持一致的,设置背景色会覆盖网格线,并不会覆盖边框。 所以有个建议:设置背景色,网格线消失,这个逻辑是符合用户期待的逻辑,并不需要再手动加边框。 这个示例中有类似方法的实现,在控制台可以看到完整的代码: https://demo.grapecity.com.cn/spreadjs/Fea ...

7 个回复

最佳答案
最佳答案
Fiooona
论坛元老   /  发表于:2020-1-19 15:42:55
来自 6#
对于上面单元格设置的下边框实线,会影响下方单元格设置虚线的问题,我们会与研发同事反馈。

另外,SpreadJS 中设置网格线、边框、背景色、是与Excel的行为保持一致的,设置背景色会覆盖网格线,并不会覆盖边框。

所以有个建议:设置背景色,网格线消失,这个逻辑是符合用户期待的逻辑,并不需要再手动加边框。


这个示例中有类似方法的实现,在控制台可以看到完整的代码:
https://demo.grapecity.com.cn/sp ... Down/inspector.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-19 18:02:25
2#
本帖最后由 Fiooona 于 2020-1-19 18:11 编辑

getCell(0,0) 再设置坐边框为虚线,与行头的实线重合了,所以没有显示出来虚线,正常是可以再设置成虚线的,您可以验证:
  1. const defaultStyle = new GC.Spread.Sheets.Style();
  2. defaultStyle.borderTop = new GC.Spread.Sheets.LineBorder(
  3.   '#d0d7e5',
  4.   GC.Spread.Sheets.LineStyle.thin,
  5. );
  6. sheet.setDefaultStyle(defaultStyle);

  7. sheet.getCell(1, 1).borderTop(new GC.Spread.Sheets.LineBorder('black', GC.Spread.Sheets.LineStyle.dotted));
复制代码


组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
ycy
注册会员   /  发表于:2020-1-20 12:10:41
3#
本帖最后由 ycy 于 2020-1-20 12:21 编辑
Fiooona 发表于 2020-1-19 18:02
getCell(0,0) 再设置坐边框为虚线,与行头的实线重合了,所以没有显示出来虚线,正常是可以再设置成虚线的 ...

不好意思,我说漏了。是如果在defaultStyle里设置了上下的边框,再在cell(1,1)上画虚线边框就画不上去了。原因应该是(1,1)相邻的格子有defaultStyle的实线上下边框,所以覆盖了(1,1)自身的虚线边框,我不知道应该怎么解决……
  1. const defaultStyle = new GC.Spread.Sheets.Style();
  2. defaultStyle.borderTop = new GC.Spread.Sheets.LineBorder(
  3.             '#d0d7e5',
  4.             GC.Spread.Sheets.LineStyle.thin,
  5.         );
  6. defaultStyle.borderBottom = new GC.Spread.Sheets.LineBorder(
  7.             '#d0d7e5',
  8.             GC.Spread.Sheets.LineStyle.thin,
  9.         );
  10. sheet.setDefaultStyle(defaultStyle);

  11. sheet.getCell(1, 1).borderTop(new GC.Spread.Sheets.LineBorder('black', GC.Spread.Sheets.LineStyle.dotted)); // 画不了

  12. sheet.getCell(3, 3).borderTop(new GC.Spread.Sheets.LineBorder('black', GC.Spread.Sheets.LineStyle.thick)); // 实线边框就可以画上去
复制代码



回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-20 15:36:14
4#
这个是0,1单元格的下边框 覆盖了 1,1 单元格的上边框,下边框是实线就覆盖了虚线的情况,
可以给0,1单元格设置下边框解决这个问题:
  1. sheet.getCell(0, 1).borderBottom(new GC.Spread.Sheets.LineBorder('red', GC.Spread.Sheets.LineStyle.dotted)); // 画不了
复制代码

组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
ycy
注册会员   /  发表于:2020-1-20 19:17:08
5#
本帖最后由 ycy 于 2020-1-20 19:19 编辑
Fiooona 发表于 2020-1-20 15:36
这个是0,1单元格的下边框 覆盖了 1,1 单元格的上边框,下边框是实线就覆盖了虚线的情况,
可以给0,1单元 ...

但是这就要去改另一个单元格的边框了。

我的应用场景是,想做个工具栏,让用户可以自己画边框,和改单元格背景色。


但是我发现,改单元格背景色时,如果直接设置一个单元格的backColor的话,这个单元格四周的网格线就会消失,因为它有了style以后,没有border属性时,就直接变成无边框了。

于是我就改成,在设置backColor的时候,如果没有border,就给单元格画默认灰色border,但是这样如果相邻的单元格有用户画上去的虚线边框,就会被我画的默认灰色border覆盖掉,这就不对了,灰色border是一种默认的边框,如果用户画了别的边框应该显示用户画的边框。
然后我就想改成,用defaultStyle设置默认边框色,但像一开始讲的那样,也是不行的。

我不能因为用户画(1,1)的虚线边框不行,就去改(0,1)的边框,因为(0,1)的边框也可能是用户画出来的。这要怎么整,就没有一种优先级低于border的默认边框吗………?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ycy
注册会员   /  发表于:2020-1-21 11:19:18
7#
Fiooona 发表于 2020-1-21 09:42
对于上面单元格设置的下边框实线,会影响下方单元格设置虚线的问题,我们会与研发同事反馈。

另外,Spre ...

好的,谢谢帮助和建议。
那我看看改成设背景色时,覆盖网格线吧。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-1-21 11:28:55
8#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部