Проблема прокрутки 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, чтобы помочь с логикой.