首页 文章

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

提问于
浏览
0

在使用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();
  }
}

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

2 回答

  • 1

    您需要在发出http请求之前存储滚动位置,并在将项目添加到FlexGrid后进行设置 .

    有关http服务延迟模拟,请参阅以下更新的小提琴:

    [http://jsfiddle.net/hwr2ra1q/41/][1]
    
  • 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/

相关问题