Paginação de rolagem infinita Extjs4 no plugin rowediting
-
12-12-2019 - |
Pergunta
Estou tentando fazer com que a rolagem infinita funcione e passei pelos blogs e postagens relevantes, mas não consigo descobrir por que, quando meu verticalscroller atinge o numfromedge, ele não dispara nenhuma solicitação ao servidor?
Eu entendi corretamente, que quando o scroller vertical atingir o numfromedge, uma solicitação será disparada pela loja para o servidor?o que implica que do lado do servidor temos que gerenciar a consulta e o retorno por páginas?ou retorno todos os registros de uma vez do servidor?Porque se eu definir o leadBufferedZone como 100 e purgePageCount como 0, haverá cerca de 7 solicitações feitas, cada uma com tamanho 50, para o servidor?Mas neste caso como vocês podem ver isso não acontece no numfromedge e sim logo no começo...
Minha grade
Ext.define('AM.Something', {
extend : 'Ext.grid.Panel',
alias : 'widget.something',
title : 'something',
store : 'somethingStore',
verticalScroller: {
numFromEdge: 10,
trailingBufferZone: 10,
leadingBufferZone: 10
},
verticalScrollerType: 'paginggridscroller',
invalidateScrollerOnRefresh: false,
disableSelection:true,
selType : 'rowmodel',
features : [ somefiltering],
plugins : // Row editing plugin ....
Minha loja
Ext.define('AM.somethingStore', {
extend: 'Ext.data.Store',
model: 'AM.somethingModel',
autoLoad : true,
autoSync: true,
// remoteSort:true,
buffered : true,
// leadingBufferedZone:100,
// purgePageCount:0,
pageSize:50,
proxy: {
type: 'ajax',
api :
{
read : 'something/fetch',
update:'something/update',
create :'something/create',
destroy : 'something/delete'
},
reader :
{
type : 'json',
root : 'someList.content', // an array of rows for the grid
successProperty : 'success',
idProperty : 'id',
totalProperty: 'total'
},
writer :
{
type : 'json',
allowSingle : true
}
}
Eu uso spring-data e controladores spring no backend
@RequestMapping(value = "/something/fetch", method = RequestMethod.GET)
public @ResponseBody
Map<String, ? extends Object> fetchPricing(@RequestParam Integer page, @RequestParam Integer limit ) {
Page<Somethings> someList= someService.fetchSomething(page-1,limit);
Map<String, Object> responseMap = new HashMap<String, Object>();
responseMap.put("success", true);
responseMap.put("someList", someList);
return responseMap;
}
Eu esperava que quando a barra de rolagem atingisse 10 dos últimos registros exibidos na grade, a loja enviasse uma solicitação ao servidor para a página2 e o limite de tamanho da página.
Há algo configurado incorretamente?
desde já, obrigado
Solução
Loja
//autoLoad : true,
autoSync: true,
//remoteSort:true,
remoteFilter:true,
buffered : true,
leadingBufferedZone:200,
purgePageCount:0,
pageSize:50
Grade
verticalScroller: {
numFromEdge: 10,
trailingBufferZone: 10,
leadingBufferZone: 10
},
verticalScrollerType: 'paginggridscroller',
invalidateScrollerOnRefresh: false,
disableSelection:true,