Проблема прокрутки 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);

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


person Damir    schedule 11.04.2011    source источник


Ответы (2)


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

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

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

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

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

person Tom Gruner    schedule 11.04.2011

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

person AROE    schedule 04.01.2013