Прокрутка устанавливается на первое место после добавления новых данных в виртуальную прокрутку в сетку wijmo.
При реализации виртуальной прокрутки с помощью сетки 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?
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/
Вам необходимо сохранить положение прокрутки перед выполнением http-запроса и установить его обратно после добавления элементов в FlexGrid.
Пожалуйста, обратитесь к следующей обновленной скрипте с симуляцией задержки службы http:
[http://jsfiddle.net/hwr2ra1q/41/][1]