在虚拟滚动中将新数据附加到wijmo-grid后,滚动设置为顶部

时间:2018-02-23 11:53:23

标签: wijmo wijmo-grid

在使用网格实现虚拟滚动时,根据以下代码,当新数据附加到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();
  }
}

知道我们怎么能阻止这种行为?其他网格如提供了平滑的行为 - 一旦数据被追加,前一个最后一条记录就会保留在视图中。我们可以为实现类似的行为吗?

2 个答案:

答案 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]