Виджет Sencha GXT Grid ListStore.getAll() возвращает только частичные данные

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

Пример:

У меня есть сетка, которая выглядит примерно так

1: яблоко

2: Мальчик

3: собака

4: сок

5: слайд

6: джава

7: питон

8: пхп

9: клавиатура

10: грабли

Однако при просмотре сетки в реальном времени в текущем окне доступны только 5 из них, а остальные 10 «спрятаны». Это означает, что пользователю нужно будет использовать полосу прокрутки виджета сетки, чтобы увидеть остальные данные. Мой вопрос: как я могу убедиться, что взаимодействую со всем хранилищем списков, а не только с его частями?


person sudobangbang    schedule 08.01.2015    source источник
comment
Посмотрите, возвращает ли ListStore.size() правильный счет. Также попробуйте позвонить ListStore.findModelWithKey(String), чтобы узнать, находит ли он скрытые записи. В противном случае вы должны отключить пейджинг для сетки, если вам нужен одновременный доступ ко всем данным — я считаю, что сетка GXT не сохраняет загруженными скрытые строки, когда пейджинг включен.   -  person gknicker    schedule 08.01.2015
comment
ListStore.size() возвращает неверный счетчик. Как отключить пейджинг?   -  person sudobangbang    schedule 08.01.2015
comment
Я знаю, что есть обычный ListLoader вместо PagingLoader (для Grid.setLoader(ListLoader)). Если это не поможет, возможно, опубликуйте свой код, который создает и настраивает Grid. Вы также можете проверить Sencha Javadoc для версий классов без подкачки. используется для настройки сетки.   -  person gknicker    schedule 08.01.2015
comment
Почему getAll не возвращает все элементы?   -  person sudobangbang    schedule 08.01.2015
comment
Потому что сетка загружает только текущую страницу элементов.   -  person gknicker    schedule 08.01.2015
comment
Это не постраничная сетка, это базовая сетка с длинной прокруткой: [sencha. com/examples/#ExamplePlace:basicgrid]   -  person sudobangbang    schedule 08.01.2015


Ответы (1)


Если вы изменяете данные сетки вручную, убедитесь, что вы вызываете метод обновления объекта listStore, вот пример кода:

List<Event> listData = listStore.getAll();
for (Event event : listData) {
    event.setText(event.getText()+" altered!");
    listStore.update(event);
}

Есть еще одна вероятность, вы используете встроенную редактируемую сетку, если вы изменяете данные сетки, убедитесь, что вы вызываете метод фиксации изменений из хранилища списка, вот пример:

listStore.commitChanges();

Я надеюсь, что это поможет вам. В противном случае, пожалуйста, опубликуйте свой код, чтобы я мог лучше понять вашу проблему.

person the.wizard    schedule 09.01.2015
comment
По сути, я изменяю данные сетки, как вы могли догадаться из моих предыдущих вопросов, и загружаю сетку. Я в порядке с первоначальным изменением, однако, как только пользователь прокручивает вверх или вниз, данные меняются обратно на исходные данные, а не на измененные. - person sudobangbang; 09.01.2015
comment
Как вы изменяете данные сетки? По моему опыту, сначала я делаю это неправильно, что-то вроде того, что я получаю объект данных из своего listStore и просто изменяю его. Ключом к изменению данных сетки является вызов метода обновления в конце вашего кода, вы его вызывали? - person the.wizard; 10.01.2015