在使用wijmo网格实现虚拟滚动时,根据以下代码,当新数据附加到data
数组时(一旦我们滚动并到达网格的最后一条记录),滚动重置到初始位置。
选中 JSFiddle
scrollPositionChanged: function(s, e) {
// if we're close to the bottom, add 10 items
if (s.viewRange.bottomRow >= s.rows.length - 1) {
addData(data, 20);
s.collectionView.refresh();
}
}
知道我们怎么能阻止这种行为?其他网格如slickgrid,ag-grid提供了平滑的行为 - 一旦数据被追加,前一个最后一条记录就会保留在视图中。我们可以为wijmo-grid实现类似的行为吗?
答案 0 :(得分:1)
您可以在刷新网格之前保存滚动位置,并在滚动后恢复相同的内容。
var pos;
var grid = new wijmo.grid.FlexGrid('#flex', {
itemsSource: data,
scrollPositionChanged: function (s, e) {
// if we're close to the bottom, add 10 items
if (s.viewRange.bottomRow >= s.rows.length - 1) {
addData(data, 20);
//save current scroll postion
pos = grid.scrollPosition;
s.collectionView.refresh();
}
//restore scroll position
if (pos) {
s.scrollPosition = Object.assign({}, pos);
pos = null;
}
}
});
检查更新后的小提琴: - http://jsfiddle.net/797tjc5u/
答案 1 :(得分:1)
您需要在发出http请求之前存储滚动位置,并在将项目添加到FlexGrid后进行设置。
请参阅以下更新的小提示http服务延迟模拟:
[http://jsfiddle.net/hwr2ra1q/41/][1]