jQuery MiniUI

 找回密码
 立即注册
查看: 3930|回复: 5
打印 上一主题 下一主题

datagrid虚拟滚动滚动条定位 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-3-25 20:14:55 |只看该作者 |倒序浏览
检索使用setData来刷新结果
grid.setData(rows);

再次检索后,想让滚动条在最上面,使用了下面的方法
grid.setData(rows);
grid.scrollIntoView(grid.getRow(0));

如果第一次检索数据较多,有垂直滚动条,向下拖动滚动条
再次检索数据较少(不应该存在滚动条),使用上面的方式,table会变成空白,且滚动条还是存在
修改为下面的方法可解决了这个问题
grid.scrollIntoView(grid.getRow(0));
grid.setData(rows);

但是如果再次检索的数据还是较多(应该存在滚动条),使用上面的方法并不能让滚动条定位在最上面

请问应该如何设置?

Rank: 8Rank: 8

沙发
发表于 2017-3-27 11:04:30 |只看该作者
先滚动到最上面,再重新setdata可以的啊。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

板凳
发表于 2017-3-27 21:02:23 |只看该作者
felt 发表于 2017-3-27 11:04
先滚动到最上面,再重新setdata可以的啊。

虽然每个问题都能解决,但是写法不能统一
需要自己判断是否有垂直滚动条来调整scrollIntoView及setData的顺序

刚试了下,下面这个方法可以避免这个判断
grid.scrollIntoView(grid.getRow(0));
grid.setData(rows);
grid.scrollIntoView(grid.getRow(0));
这样写感觉怪怪的。。。

setData参数设计成2个不知是否可行,第二个参数用于指定滚动条位置是否保留
不保留:当前scrollTop=0
保留:当前scrollTop=旧scrolltop>当前最大的scrolltop?当前最大的scrolltop:旧scrolltop


Rank: 8Rank: 8

地板
发表于 2017-3-28 10:39:35 |只看该作者
toukinsou 发表于 2017-3-27 21:02
虽然每个问题都能解决,但是写法不能统一
需要自己判断是否有垂直滚动条来调整scrollIntoView及setData的 ...

我觉得加载不同的数据滚动条有或者没有,出现的位置也是不一样的,统一加载前滚动最上面是个最正常的处理了
执行这2行代码应该统一处理你的问题的,滚动到第一行,重加载数据了
grid.scrollIntoView(grid.getRow(0));
grid.setData(rows);

Rank: 2

5#
发表于 2017-3-28 14:59:13 |只看该作者
dforce 发表于 2017-3-28 10:39
我觉得加载不同的数据滚动条有或者没有,出现的位置也是不一样的,统一加载前滚动最上面是个最正常的处理 ...

问题是这样写第二次并不能滚到第一行

Rank: 8Rank: 8

6#
发表于 2017-3-28 16:17:25 |只看该作者
toukinsou 发表于 2017-3-28 14:59
问题是这样写第二次并不能滚到第一行

我测试了一下是可以的,如果实在不行,那个下面那行代码加点延时
grid.scrollIntoView(grid.getRow(0));
setTimeout(function(){
grid.setData(rows);
},100)

Archiver|普加软件

GMT+8, 2024-9-29 02:14 , Processed in 1.046023 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部