У меня была похожая проблема при получении результатов от стороннего API, у которого был отдельный URL для количества элементов. Я создал новый класс, унаследованный от pagingtoolbar с дополнительной функцией updatePager ():
updatePager : function(){
var me = this,
pageData,
currPage,
pageCount,
afterText,
count,
isEmpty;
count = me.store.getCount();
isEmpty = count === 0;
if (!isEmpty) {
pageData = me.getPageData();
currPage = pageData.currentPage;
pageCount = pageData.pageCount;
afterText = Ext.String.format(me.afterPageText, isNaN(pageCount) ? 1 : pageCount);
} else {
currPage = 0;
pageCount = 0;
afterText = Ext.String.format(me.afterPageText, 0);
}
Ext.suspendLayouts();
me.child('#afterTextItem').setText(afterText);
me.child('#inputItem').setDisabled(isEmpty).setValue(currPage);
me.child('#first').setDisabled(currPage === 1 || isEmpty);
me.child('#prev').setDisabled(currPage === 1 || isEmpty);
me.child('#next').setDisabled(currPage === pageCount || isEmpty);
me.child('#last').setDisabled(currPage === pageCount || isEmpty);
me.child('#refresh').enable();
me.updateInfo();
Ext.resumeLayouts(true);
if (me.rendered) {
me.fireEvent('change', me, pageData);
}
}
});
Я добавил itemId к нему при добавлении в док
dockedItems: [{
xtype: 'dynamicpagingtoolbar',
itemId: 'pager_id',
dock: 'bottom',
store: 'CompoundPharmacologyPaginatedStore',
displayInfo: true
}],
Я добавил функцию setTotalCount () в связанный магазин:
setTotalCount: function(count) {
this.totalCount = count;
}
Затем, когда вы хотите обновить его, вызовите store.setTotalCount (total), а затем pager.updatePager (). Помните, что сначала вам нужно получить пейджер, используя что-то вроде
pager = grid_view.down ('# pager_id');