找回密码
 立即注册

QQ登录

只需一步,快速开始

果果xxxxk

初级会员

46

主题

134

帖子

438

积分

初级会员

积分
438
果果xxxxk
初级会员   /  发表于:2022-10-10 15:56  /   查看:2327  /  回复:5
1金币
需要让滚动条根据行数列数来自适应是否展示,目前通过sheet.getViewportBottomRow(1) 和 sheet.getRowCount()+1 是否相等来控制滚动条展显示/隐藏。

但是会有问题,当最后一行 或者 最后一列展示一部分时,这时也需要展示滚动条,但是因为上面的判断满足,所以滚动条也隐藏了。

最佳答案

查看完整内容

这里需要计算下,首先获取Spread容器的高度 ,其次获取列头的高度,最后获取最后一行的y与height,进行比较。确定是否出现纵向滚动条的代码大概如下所示: 这里用到了几个API文档,分别是getRowHeight,[/backcolor]getCellRect可以在[/backcolor]https://demo.grapecity.com.cn/spreadjs/help/api/modules/GC.Data查询相关用法。

5 个回复

倒序浏览
最佳答案
最佳答案
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-10-10 15:56:03
来自 4#
本帖最后由 Ellia.Duan 于 2022-10-12 18:05 编辑

这里需要计算下,首先获取Spread容器的高度 ,其次获取列头的高度,最后获取最后一行的y与height,进行比较。确定是否出现纵向滚动条的代码大概如下所示:
  1. const rowCount = sheet.getRowCount(), colCount = sheet.getColumnCount()

  2.         if (sheet.getViewportBottomRow(1) == rowCount - 1) {
  3.             const spreadDomHeight = document.getElementById('ss').offsetHeight
  4.             const headerHeight = sheet.getRowHeight(0, GC.Spread.Sheets.SheetArea.colHeader)
  5.             const {y, height} = sheet.getCellRect(rowCount - 1, 1, 1, 1)
  6.             if ((y + height < spreadDomHeight - headerHeight)){
  7.                 spread.options.showVerticalScrollbar = false;
  8.             }
  9.         }
复制代码
这里用到了几个API文档,分别是getRowHeight,getCellRect可以在https://demo.grapecity.com.cn/spreadjs/help/api/modules/GC.Data查询相关用法。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-10 18:10:11
2#
那你就把像素滚动关掉,这样不会存在只展示一部分的情况
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2022-10-12 17:28:05
3#
Clark.Pan 发表于 2022-10-10 18:10
那你就把像素滚动关掉,这样不会存在只展示一部分的情况

是把scrollByPixel设置为false吗,设置后并没有什么不同
回复 使用道具 举报
果果xxxxk
初级会员   /  发表于:2022-10-12 20:22:27
5#
Ellia.Duan 发表于 2022-10-12 18:03
这里需要计算下,首先获取Spread容器的高度 ,其次获取列头的高度,最后获取最后一行的y与height,进行比较 ...

这样计算会有问题吗,我现在需要展示纵向滚动条,纵向内容实际上很多,但是用这里的方法,获取到的数据是这样
headerHeight: 20
height: 21
spreadDomHeight: 948
y: 738

看这个帖子也说获取方法有问题的,https://gcdn.grapecity.com.cn/showtopic-154347-1-4.html
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-10-13 09:29:24
6#
果果xxxxk 发表于 2022-10-12 20:22
这样计算会有问题吗,我现在需要展示纵向滚动条,纵向内容实际上很多,但是用这里的方法,获取到的数据是 ...

我这个方法有一个条件:当前工作簿可视区域 定位在了最后一行,只不过最后一行没有展示全部的情况下,在进行进一步判断。

image.png873440246.png




https://gcdn.grapecity.com.cn/fo ... 54347&fromuid=73514  这个帖子说到 “当滚动条不在顶部时,getCellRect获取单元格x,y值不准确”因为一开始进来计算是否存在滚动条,滚动条肯定是在顶部的。


其次这个方案 是我这边想出的最好的一个方案, 适用于一般情况,如果有特殊情况,这边没有更好解决方案了

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