Кнопка refresh не работает в pagingtoolbar без ViewModel
Всем привет!
Обнаружил сегодня такую интересную багу(?) при выводе таблицы. Если я не указываю ViewModel и просто прописываю store вот так для грида и pagingtoolbar: store: { type: 'employees' } То данные в таблицу отлично загружаются, но кнопка refresh в тулбаре не обновляет ничего. Но если создать ViewModel вот такой: Ext.define('MyApp.view.employees.EmployeesModel', { extend: 'Ext.app.ViewModel', alias: 'viewmodel.employees', requires: [ 'Ext.data.Store', 'Ext.data.proxy.Memory', 'Ext.data.field.Integer', 'Ext.data.field.String', 'Ext.data.field.Date', 'Ext.data.field.Boolean', 'Ext.data.reader.Json' ], stores: { usersResults: { type: 'employees' }, } }); А потом прописать его во вьюхе: viewModel: { type: 'employees' }, И прописать store через bind в гриде и тулбаре: bind: '{usersResults}' То кнопка refresh отлично работает! С чем связано подобное поведение? :-? |
так в документации, например, в версии 5.1.3
для грида http://docs.sencha.com/extjs/5.1.3/a...html#cfg-store параметр store может содержать Store config object, например { type: 'employees' } а смотрим на pagingtoolbar http://docs.sencha.com/extjs/5.1.3/a...html#cfg-store параметр store только либо Ext.data.Store class / subclass либо String - ID of a store так что, похоже, ваше поведение pagingtoolbar согласно документации :-) |
Это потому, что конфиг с типом хранилища приводит к созданию отдельного экземпляра, и получается, что у grid одно хранилище, а у Paging toolbar другое. Как два гуся из песенки. :)
|
Цитата:
Так каким образом прописывать store здесь? Через storeID? ViewModel мне тут в принципе не особо нужна... |
например в initComponent
создай укажи store для Paging toolbar, как здесь делают http://examples.sencha.com/extjs/5.1...k/#paging-grid |
Удаляю строку в гриде через actioncolumn вот так:
{ xtype: 'button', iconCls: 'x-fa fa-close', handler: function(grid, rowIndex, colIndex) { //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); } } Но итоговое количество в pagingtoolbar остается прежним. Какое-то событие надо вызывать его обновления? |
store.sync() store.reload() |
Или в свойствах store укажи
autoSync : true |
Цитата:
достаточно просто обновить информацию на pagingtoolbar pagingToolbar.onLoad(); для надежности иногда можно gridStore.totalCount = gridStore.count(); pagingToolbar.onLoad(); |
Цитата:
Цитата:
Простой onLoad() ничего не делает. Интересно, почему такой простой момент автоматом не выполняется? :blink: |
Часовой пояс GMT +3, время: 11:09. |