PDA

View Full Version : How to create a grid only after the store load?



brunoferoleto
29 Mar 2012, 5:36 AM
Hi!

I need to create some grids. I don't know how many. The way I now how many is by viewing the content of the json loaded in the store. So I need my store loaded BEFORE creating the grids. How can I do that?

I'm using the listener "load" inside the store to know this quantity. This store I'm creating inside an "initComponent" inside the definition of the panel that is going to have the grids. I tried to put the "Ext.apply" inside this "load" listener, but that doesn't work.

What can I do?

brunoferoleto
29 Mar 2012, 6:14 AM
I tried something like this:




Ext.define('EGPE.view.PanelGridsPorSubGrupo',{
extend: 'Ext.Panel',
xtype: 'panelGridsPorSubGrupo',

layout: 'vbox',

initComponent: function() {
var me = this;

var itens = [];

var programas = [];
var acoes = [];
var projetosEspeciais = [];
var grupos = [];
var subGrupos = [];
var programasAgrupado = [];
var acoesAgrupado = [];
var projetosEspeciaisAgrupado = [];
var gruposAgrupado = [];
var subGruposAgrupado = [];


var myStore = Ext.create('EGPE.store.StoreValoresMeses',{
listeners: {
load: function(){

// Pega todos os registros do arquivo json carregado pela store,
// para posteriormente agrupá-los.
myStore.each( function(record) {
programas.push({"id":record.data.idPrograma,"descricao":record.data.descricaoPrograma});
acoes.push({"id":record.data.idAcao,"descricao":record.data.descricaoAcao});
projetosEspeciais.push({"id":record.data.idProjetoEspecial,"descricao":record.data.descricaoProjetoEspecial});
grupos.push({"id":record.data.idGrupo,"descricao":record.data.descricaoGrupo});
subGrupos.push({"id":record.data.idSubGrupo,"descricao":record.data.descricaoSubGrupo});
});

// Elimina as duplicatas dentro do array para fazer corretamente
// os agrupamentos.
programasAgrupado = programas.uniqueIdEDescricao();
acoesAgrupado = acoes.uniqueIdEDescricao();
projetosEspeciaisAgrupado = projetosEspeciais.uniqueIdEDescricao();
gruposAgrupado = grupos.uniqueIdEDescricao();
subGruposAgrupado = subGrupos.uniqueIdEDescricao();

for (var i = 0; i < subGruposAgrupado.length; i++){
itens.push(
Ext.create('EGPE.view.GridSubGrupo',{
store: Ext.create('EGPE.store.StoreValoresMeses',{
filters:[{ property: 'idSubGrupo', value: subGruposAgrupado[i].id, exactMatch: true }]
})
})
);
}


}
}
});


Ext.apply(me, {
items: itens
});

// Utiliza o callParent para completar o carregamento do componente.
me.callParent(arguments);
}
});