Прокрутка устанавливается наверх, как только новые данные добавляются к wijmo-grid в виртуальной прокрутке.

При реализации виртуальной прокрутки с сеткой 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 обеспечивает бесперебойную работу — после добавления данных предыдущая последняя запись остается в представлении. Можем ли мы добиться аналогичного поведения для

person Paritosh    schedule 23.02.2018    source источник


Ответы (2)


Вы можете сохранить позицию прокрутки перед обновлением сетки и восстановить ее после прокрутки.

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/

person Abhishek Dutta    schedule 26.02.2018
comment
в моей конкретной ситуации данные поступают с сервера, и даже после использования grid.scrollPosition проблема все еще существует. Прокрутка идет вверх даже после этого. Из-за этого необходимо использовать setTmeout, чтобы сделать положение прокрутки постоянным. Но поскольку ваше решение решает проблему на скрипке, помечая ее как ответ. - person Paritosh; 26.02.2018

Вам необходимо сохранить позицию прокрутки перед выполнением HTTP-запроса и установить ее после добавления элементов во FlexGrid.

Пожалуйста, обратитесь к следующей обновленной скрипте с симуляцией задержки службы http:

[http://jsfiddle.net/hwr2ra1q/41/][1]
person Manish Gupta    schedule 27.02.2018