Fiooona 发表于 2020-8-31 19:02:48

SpreadJS表格控件中如何判定横向或是纵向快滚动到底部?

本帖最后由 Fiooona 于 2020-8-31 19:04 编辑

背景:在用SpreadJS进行开发时,有些小伙伴需要判断滚动条是否快滚动到底部或最右侧,在进行一些相应的提示。
思路:SpreadJS 中提供两个事件:LeftColumnChanged、TopRowChanged
          在最左侧列,或最顶行改变时会触发这两个事件,所以可以根据触发这个事件时返回的oldTopRow、newTopRow 等参数进行判断,是否滚动到了最后行、列。
         情况一:滚动条设置: spread.options.scrollbarMaxAlign = false 此设置为默认设置
      在这种情况中,表单最后一行可以滚动到最顶端,判断返回的newTopRow是否为 总行数,即可判断是否滚动到了最后一行。
参考代码:
         
sheet.bind(GC.Spread.Sheets.Events.TopRowChanged, function(<span style="background-color: transparent; color: rgb(34, 34, 34); font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Courier New&quot;, monospace, sans-serif; font-size: 12px; letter-spacing: -0.357px;">sender, args</span>) {          情况二:滚动条设置: spread.options.scrollbarMaxAlign = true 此设置下,表格无法将最后一行滚动至最顶部,故无法用args.newTopRow=== rowCount - 1进行判断。      这种情况下可以用getViewportTopRow方法获取视图顶部行索引,进行判断
参考代码:
sheet.bind(GC.Spread.Sheets.Events.TopRowChanged, function() {
    var row = sheet.<span style="color: rgb(51, 51, 51); font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);">getViewportTopRow</span>(1);
    console.log(row)
    var rowCount = sheet.getRowCount()
    if (row === rowCount - 1) {
      console.log('滚动到底部了');
    }
});
页: [1]
查看完整版本: SpreadJS表格控件中如何判定横向或是纵向快滚动到底部?