DataView - EXTjs - Dar load() em um DataView

15 respostas
A

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…

–>
–>

15 Respostas

edsonlopes

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

A
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:
//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();
Código detalhado:
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
    });
    
});
A

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

A

. (post deletado para não confundir)

Caroline_Alow
andredecotia:
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
	    		}

Faz mult-select... Por isso estou tentando por num array...

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

A

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.

Lucas_Camara

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 ??

A

.

Lucas_Camara

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
    }
}
A

. (post deletado para não confundir)

A

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…

–>
–>

Caroline_Alow

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

A

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

A

Bom dia hackers! :smiley:

Alguma dica?

A

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:

Criado 16 de dezembro de 2010
Ultima resposta 23 de dez. de 2010
Respostas 15
Participantes 4