找回密码
 立即注册

QQ登录

只需一步,快速开始

RainYan

中级会员

50

主题

175

帖子

501

积分

中级会员

积分
501
RainYan
中级会员   /  发表于:2024-7-4 17:01  /   查看:2192  /  回复:19
30金币
image.png936463317.png 我看这个右键菜单分为几个区域的,行头右键菜单,列头等等,这个里面说的workArea,我打印出来没看到有呢 我用的是17.0.8版本的 我想自定义行头的右键菜单加一个自定义的操作项,还有就是那个点击选中行序号(1,2,3,4,5这个序号列),切换选中行的事件是啥呢 没找到有

19 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-5 15:45:30
20#
RainYan 发表于 2024-7-5 15:09
我想改这个绿色的框框 就是把这个也改了可以吗

您好,试试这个链接中的方案:https://gcdn.grapecity.com.cn/showtopic-149227-1-361.html
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 15:09:09
19#
eat_grape_5 发表于 2024-7-5 15:04
请楼主看看下面这个动图所展示是否预期的行区域外边框样式:

   企业微信截图_1720163293800.png29909972.png 我想改这个绿色的框框 就是把这个也改了可以吗
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-5 15:04:26
18#
RainYan 发表于 2024-7-5 14:21
清除那个问题解决了 我把那三个-1,-1,-1改成具体的值了,可以清除了,但是边框还是没改到

请楼主看看下面这个动图所展示是否预期的行区域外边框样式:
行区域外边框边线设置.gif
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 14:21:32
17#
RainYan 发表于 2024-7-5 14:08
大佬 好像都没用呢 ,这是我依次点击1234行的效果,他加了个这种虚线边框并没有改变外面那个绿色的边框, ...

清除那个问题解决了 我把那三个-1,-1,-1改成具体的值了,可以清除了,但是边框还是没改到
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 14:08:28
16#
eat_grape_5 发表于 2024-7-5 12:07
每次选中区域时记录区域所在行索引,用Worksheet:clear()清除单元格区域样式,设置该方法的参数storageTy ...

大佬 好像都没用呢 企业微信截图_17201594724884.png954197998.png 企业微信截图_17201597018347.png312577208.png ,这是我依次点击1234行的效果,他加了个这种虚线边框并没有改变外面那个绿色的边框,也没清除掉,附上我的代码你瞅瞅 我照着你的思路来整的 da8309be-efe5-4478-9ed3-8e2438f127ff.jpg14169310.png
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-5 12:07:34
15#
RainYan 发表于 2024-7-5 11:54
sheet.unbind(GC.Spread.Sheets.Events.CellClick);
    sheet.bind(GC.Spread.Sheets.Events.CellClick ...

每次选中区域时记录区域所在行索引,用Worksheet:clear()清除单元格区域样式,设置该方法的参数storageType为样式即可。参考API文档了解详情:https://demo.grapecity.com.cn/sp ... ets.Worksheet#clear
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 11:54:54
14#
eat_grape_5 发表于 2024-7-5 11:11
选中某个区域,最前位置的单元格背景色是白色的,而其他单元格背景色是灰色的,这个现象正常。在前述使用 ...

sheet.unbind(GC.Spread.Sheets.Events.CellClick);
    sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
    if (args.sheetArea === 2) {
        let resetStyle  =  new GC.Spread.Sheets.Style();
        sheet.getRange(-1,-1,-1,-1).setStyle(resetStyle);
        var selection = sheet.getSelections()[0];
        var style = new GC.Spread.Sheets.Style();
        style.backColor = "blue";
        sheet.getRange(selection.row, 0, selection.rowCount, selection.colCount).setStyle(style);
    }
    });
我在您说的这个代码前加了两句,想达到当我切换选中行后,每次都是选中行才有添加的背景色吗,清除掉上一次被选中行的背景色,您看看是我那哪儿写错了吗 他没起到清除的效果

回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-5 11:53:19
13#
RainYan 发表于 2024-7-5 11:32
好的 谢谢了 看错了 我直接用它sheet.getSelections()当做对象了 没看清是个数组,生效了 还有就是这个边 ...

那就是设置选中区域行的外边线了,外边线分为四部分:所有单元格的上边线、所有单元格的下边线、行最左侧单元格的左边线、最右侧单元格的右边线组成,依次设置这四个部分的边线即可。

代码示例如下:
  1.     sheet.unbind(GC.Spread.Sheets.Events.CellClick);
  2.     sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
  3.          if (args.sheetArea === 2) {
  4.             var selection = sheet.getSelections()[0];
  5.             console.log(selection.row, selection.colCount);
  6.             var colCount = selection.colCount;

  7.             //  设置选中区域行的上下边线为虚线
  8.             var style = new GC.Spread.Sheets.Style();
  9.             style.borderTop = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  10.             style.borderBottom = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  11.             sheet.getRange(selection.row, 0, selection.rowCount, selection.colCount).setStyle(style);
  12.                
  13.             //  设置选中区域行最左侧单元格的上下边线为虚线
  14.             var leftBorderStyle = new GC.Spread.Sheets.Style();
  15.             leftBorderStyle.borderLeft =new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  16.             leftBorderStyle.borderTop = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  17.             leftBorderStyle.borderBottom = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  18.             sheet.getCell(selection.row, 0).setStyle(leftBorderStyle);

  19.             //  设置选中区域行最右侧单元格的上下边线为虚线
  20.             var rightBorderStyle = new GC.Spread.Sheets.Style();
  21.             rightBorderStyle.borderRight = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  22.             rightBorderStyle.borderTop = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  23.             rightBorderStyle.borderBottom = new GC.Spread.Sheets.LineBorder("blue",GC.Spread.Sheets.LineStyle.dashDot);
  24.             sheet.getCell(selection.row, selection.colCount - 1).setStyle(rightBorderStyle);
  25.       }
  26.     });
复制代码
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 11:32:21
12#
eat_grape_5 发表于 2024-7-5 11:11
选中某个区域,最前位置的单元格背景色是白色的,而其他单元格背景色是灰色的,这个现象正常。在前述使用 ...

好的 谢谢了 看错了 我直接用它sheet.getSelections()当做对象了 没看清是个数组,生效了 还有就是这个边框我发现我改变的是单元格的边框,并不是这个绿色的大边框 ,这个大边框能修改吗,我想给他改个颜色整成虚线的边框 企业微信截图_17201503074946.png983866577.png
回复 使用道具 举报
RainYan
中级会员   /  发表于:2024-7-5 10:42:41
10#
eat_grape_5 发表于 2024-7-5 09:21
那就用CellClick事件,该事件被触发后记录了单元格所在区域,判断区域为行头时执行事件处理函数即可。如 ...

为啥 我点击行头后获取到选中的区域 然后我去给选中区域加样式 用的setStyle 和 getRang().setStyle() 试了 都没生效呢 还有就是我发现选中后第一列的格子好像背景色和其他的都不一样呢 好像是被选中的单元格 所以背景色是白色,怎么去统一选中行背景色呢


企业微信截图_17201471195520.png331248473.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部