Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Кнопка refresh не работает в pagingtoolbar без ViewModel (https://javascript.ru/forum/extjs/65152-knopka-refresh-ne-rabotaet-v-pagingtoolbar-bez-viewmodel.html)

Sogl 07.10.2016 07:58

Пока что такое решение:
//get store
var store = grid.getStore();
//get current record by row index
var rec = store.getAt(rowIndex);
//delete (autosync do all job)
store.remove(rec);
//reload store
store.reload();


Соответственно, это еще +1 запрос после удаления на получение списка снова, что не очень радует.

Pavel M. 07.10.2016 12:46

Цитата:

Сообщение от Sogl
Простой onLoad() ничего не делает.

почему не делает
обновляет toolbar
простенький пример https://fiddle.sencha.com/#fiddle/1i3e
нажми кнопку Удалить первую строку - обновится
только данные в примере из статического json берутся, поэтому сами данные, которые через ajax запрашиваются, не обновляется

Sogl 08.10.2016 15:35

Хм... а у меня в 6.0.1 почему-то всегда выпадает значение в getTotalCount() ДО удаления. Лишь в count() реальное значение, но там только видимые данные, в пагинации.

Sogl 13.10.2016 04:05

В общем, ребят, так я и не пойму как store объявлять без ViewModel.:help:

Лезем в доку и видим, что можно передавать storeId что в грид, что в тулбар:
http://docs.sencha.com/extjs/6.2.0/c...html#cfg-store
http://docs.sencha.com/extjs/6.2.0/c...html#cfg-store

Ок. Прописываем у store следующее:
storeId: 'employees1',


Пишем `store: 'employees1'` в тулбаре и гриде и получаем ошибку:
TypeError: store is undefined


Хорошо, ищем примеры объявления. Например, в примере грида сразу есть такое:
store: Ext.data.StoreManager.lookup('employees1'),

Прописываем в грид и тулбар и в итоге наши записи не грузятся в таблицу:blink:

То же самое для этого кода:
store: Ext.getStore('employees1')


Зато если прописать вот так:
//грид
store:  Ext.create('MyApp.store.employees.Employees'),
//тулбар
store: Ext.getStore('employees1')


то все работает, НО.... теперь даже если захожу во view логина, то у меня ИДЕТ GET ЗАПРОС на получение сотрудников из главного view, который еще даже не загружен. Я так понимаю, это связано с requires секцией, но в view логина я не гружу этот store.

В общем, это какое-то сильное колдунство...со stores во ViewModel все работает адекватно и грузится именно тогда, когда вызвана вьюшка.

Sogl 13.10.2016 04:47

Кстати, про этот фидл:
https://fiddle.sencha.com/#fiddle/1i3e

Такой код:
store.totalCount = store.getTotalCount() - 1;
pb.onLoad();


Разве учитывает то, что мы удалим не один элемент, а, например, 5... или когда несколько пользователей работают с таблицей и удаляют одновременно разные записи?
Похоже, релоад store лучший вариант.

Sogl 13.10.2016 07:31

В общем, посмотрел я вот этот пример:
http://examples.sencha.com/extjs/6.2...k/#paging-grid

и увидел, что в `pagingtoolbar` вообще можно store не прописывать и все замечательно работает. Убедился, что это так.
Хватает такого кода в гриде:
store: {
        type: 'employees'
    },

Чудеса)
В одном примере Сенча прописывает, в другом нет...

Pavel M. 13.10.2016 11:28

В документации к 6.2 классик версии
http://docs.sencha.com/extjs/6.2.0/c...html#cfg-store
сказано
If no store is provided, the store of the owner component (if there is an owner and it has a store) is used.


Часовой пояс GMT +3, время: 03:27.