DataView - EXTjs - Dar load() em um DataView

Como dar load, chamar pra carregar um DataView? Aliás, se tenho um DataView, tenho q dar load nele ou
no store (JsonStore)?

Detalhamento: Existe um grid com várias pessoas, ao clicar em uma pessoa, seu id vai irá para Action q servirá de parâmetro para ser
gerada a galeria de fotos, por isso assim q mandar o id pra Action tem carregar o DataView na sequência para poder popular…

–>
–>

andredecotia, fale mais sobre o seu problema… É complicado de se chegar a alguma ajuda com poucas informações, ok.

Tenho um var store = new Ext.data.JsonStore({ usando DataView do EXTjs (XTemplate etc) e isso está completamente dentro de um arquivo .js. E
de dentro de um .jsp onde o tenho dentro via include outro (.jsp que o tem) estou tentando chamar para carregar/dar load, já tomei as medidas abaixo porém nenhuma
funcionou:

 		[code]		//I've tried those below:
 				//Ext.getCmp('datav').bindStore(pessoasStores);
 				//Ext.getCmp('panelPessoaGaleria').load();
 				//Ext.getCmp('panelPessoaGaleria').show();
 				//Ext.getCmp('panelPessoaGaleria').reload();
 				//Ext.getCmp('images-view').load();
 				//Ext.getCmp('images-view').getStore().reload();
 				//Ext.getCmp('images-view').store.load();
 				//Ext.getCmp('store').load();
 				//store.load();
 				//datav.getStore().reload();
 				//grid.getView().refresh();[/code]

Código detalhado:

[code]Ext.onReady(function(){
var conn = new Ext.data.Connection();

var store = new Ext.data.JsonStore({
	proxy: new Ext.data.HttpProxy({
		url: 'jsonParaGaleria.action',
		method: 'POST'
	}),
	root: 'rows',
	fields: [
		{name: 'idsDosThumbs', type: 'int'},
			 'nomesDosThumbs',
			 'urlFotoOriginal',
			 'urlsDosThumbs'
	]
});

store.load();

var tpl = new Ext.XTemplate(
    '<tpl for=".">',
        '<div class="thumb-wrap" id="{nomesDosThumbs}">',
        '<div class="thumb"><img src="{urlsDosThumbs}" title="{nomesDosThumbs}"></div>',
        '</div>',
    '</tpl>',
    '<div class="x-clear"></div>'
);

var tplDetail = new Ext.XTemplate(
    '<div class="details">',
		'<tpl for=".">',
			'<img src="{urlsDosThumbs}"><div class="details-info">',
			'<b>Nome do Thumb:</b>',
			'<span>{nomesDosThumbs}</span>',
            '<span><a href="{urlFotoOriginal}" target="_blank">Ver Imagem Original</a></span></div>',
		'</tpl>',
	'</div>'
);

var tbar = new Ext.Toolbar({
    style: 'border:1px solid #99BBE8;'
});
    
//botões acima da galeria
tbar.add(
{
    text: 'Voltar (lista de Pessoas)',
    handler: function() {
        window.location = "pessoas.action";
    }
}, 
{
    text: 'Excluir (selecione um ou mais thumbs)',
    //icon: 'imagens/cross.png'
    handler: function() {
		conn.request({
    		
			/*  var arrayIdsImagens = []; //inicializa dizendo ser um array
			  var recebeOsIdsDasImagens = store.getSelectionModel().getSelected().get('idsDosThumbs'); //deveria recebe os ids 
			  Ext.each(recebeOsIdsDasImagens,function(node){ //itera sobre o array recebe, não sei o que é esse node
				  arrayIdsImagens.push(node.id);
              });
			
		 	url: 'enviaIdDaFotoGaleriaAction.action',                
		 	params: {
		 			'idImagem': arrayIdsImagens
    		}*/
		
		});
    	store.load();
    }	
});



var datav = new Ext.DataView({
    autoScroll: true, store: store, tpl: tpl,
    autoHeight: false, height: 400, multiSelect: true,
    overClass: 'x-view-over', itemSelector: 'div.thumb-wrap',
    emptyText: 'No images to display',
    style: 'border:1px solid #99BBE8; border-top-width: 0',

    listeners: {

/*
selectionchange: {
fn: function(dv,nodes){
var l = nodes.length;
var s = l != 1 ? ‘s’ : ‘’;
panelLeft.setTitle(‘Simple DataView Gallery (’+l+’ image’+s+’ selected)’);
}
},
*/
click: {
fn: function() {
var selNode = datav.getSelectedRecords();
tplDetail.overwrite(panelRightBottom.body, selNode[0].data);
}
}
}
})

var panelLeft = new Ext.Panel({
    id: 'images-view',
    frame: true,
    width: 520,
    height: 480,
    //autoHeight: true,
    layout: 'auto',
    title: 'Galeria de Fotos',
    items: [tbar,datav]
});
panelLeft.render('left');



var panelRightBottom = new Ext.Panel({
    title: 'Image Detail',
    frame: true,
    width: 330,
    height: 255,
    id: 'panelDetail',
    renderTo: 'right-bottom',
    tpl: tplDetail
});

});[/code]

Alguém já passou por alguma situação dessas de ter de usar DataView do EXTjs?

. (post deletado para não confundir)

[quote=andredecotia]

[code]var arrayIdsImagens = []; //Inicializa dizendo ser um array
var recebeOsIdsDasImagens = datav.getSelectedRecords(); //Deveria receber os ids das imagens selecionadas
Ext.each(recebeOsIdsDasImagens,function(){ //Deveria iterar sobre o array recebeOsIdsDasImagens
recebeOsIdsDasImagens.push(recebeOsIdsDasImagens[0].idsDosThumbs);
});

		 	url: 'enviaIdDaFotoGaleriaAction.action',                
		 	params: {
		 			'idImagem': arrayIdsImagens
    		}[/code]

Faz mult-select… Por isso estou tentando por num array…[/quote]

Oi menino, tudo indica que existem um problema no seu Ext.each!

Deletei o post acima pois estava confuso Caroline, por favor, desconsirar essa outra dúvida… O problema mesmo é o do load() q não está funcionando nem a pau.

Mano, basta dá um load no seu store para que sua dataview apresente os dados. Por isso que vc define em sua data view qual store irá utilizar.

qual erro que dá quando vc tenta utilizar multi-select ??

.

Tenta utilizar o evento “selectionchange” do dataview, no caso, um listener:

listeners: {
    selectionchange: function(dv, imagens) {
        // Aqui vc faz o que quer com as imagens selecionadas
    }
}

. (post deletado para não confundir)

[quote=andredecotia]Como dar load, chamar pra carregar um DataView? Aliás, se tenho um DataView, tenho q dar load nele ou
no store (JsonStore)?

Detalhamento: Existe um grid com várias pessoas, ao clicar em uma pessoa, seu id vai irá para Action q servirá de parâmetro para ser
gerada a galeria de fotos, por isso assim q mandar o id pra Action tem carregar o DataView na sequência para poder popular…

–>
–>[/quote]

Oiiiiii, cê então tentou o store.load() e nada, né?

Já sim… Tentei tb o //store.reload();

Bom dia hackers! :smiley:

Alguma dica?

Algum amigo, me disse que o problema é porque estou dando include em .jsp para acessar o galeriaDeFoto.js que é o quem contém todos esse JavaScript citado
acima…

Efetuando testes… :smiley: