Проблема прокрутки Dojo с DataGrid

У меня проблема в DOJO с DataGrid. Я обновляю свою сетку каждые 1 секунду с помощью этого кода

window.store_data_log= new dojo.data.ItemFileReadStore({data:{items:temp}});
var grid = dijit.byId("grid_log");
grid.setStore(window.store_data_log);

и работает нормально (поставь новые данные). Проблема в том, что когда у меня много строк и я прокручиваю вниз, моя сетка обновляется, и моя прокрутка переходит в верхнюю сетку. Как это решить?

2 ответа

Решение

Конечно, вы полностью очищаете магазин и сбрасываете его каждую секунду с нуля. Когда вы сбрасываете магазин, вы в основном сбрасываете сетку. Я не ожидал бы ничего, кроме сетки, сбрасывающей положение прокрутки, когда вы обновляете его хранилище.

Возможно, вы захотите узнать, как правильно использовать магазин, а не просто пытаться восстановить его. Я ответил на это здесь:

Как обновить сетку данных

Если вы правильно используете dojo, вы получите хорошие результаты, но, просто нажав ярлык и пытаясь обновить магазин каждую секунду, вы получите непригодную сетку.

Вы должны сделать шаг назад и решить архитектуру своего приложения, а не ожидать, что обновление сетки будет каким-то волшебным решением.

Пройдя (dojo) datagrid.js, я нашел, как решить проблему:

//datastore you're using//
var store = new dojox.data.QueryReadStore({ 
   //in the fetch()//
   fetch: function (request){
        //add the following://
        request.isRender = false; 
   }
});

Важно: только установить request.isRender в false когда вы не хотите, чтобы сетка прокручивалась до самого верха. Просто имейте в виду, что в некоторых ситуациях (например, сортировка по новому столбцу), вероятно, лучше установить его на true, Просто добавьте несколько операторов if/else, чтобы помочь с логикой.

Другие вопросы по тегам