jQuery MiniUI

标题: datagrid虚拟滚动滚动条定位 [打印本页]

作者: toukinsou    时间: 2017-3-25 20:14:55     标题: datagrid虚拟滚动滚动条定位

检索使用setData来刷新结果
grid.setData(rows);

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

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

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

请问应该如何设置?


作者: felt    时间: 2017-3-27 11:04:30

[attach]9051[/attach][attach]9050[/attach]先滚动到最上面,再重新setdata可以的啊。
作者: toukinsou    时间: 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



作者: dforce    时间: 2017-3-28 10:39:35

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

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

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

问题是这样写第二次并不能滚到第一行
作者: dforce    时间: 2017-3-28 16:17:25

toukinsou 发表于 2017-3-28 14:59
问题是这样写第二次并不能滚到第一行

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




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2