Ir para conteúdo


Foto

LoadRecord


  • Por favor, faça o login para responder
1 resposta neste tópico

Enquete: LoadRecord não funciona no primeiro clique. (0 membros votaram)

LoadRecord não funciona no primeiro clique.

  1. Erro LoadRecord (0 votos [0.00%])

    Porcentagem de votos: 0.00%

  2. LoadRecord (0 votos [0.00%])

    Porcentagem de votos: 0.00%

Votar Visitantes não podem votar

#1 RodrigoJunior

RodrigoJunior

    Iniciante

  • Membros
  • Pip
  • 1 posts

Postado 22 October 2014 - 16:01

Pessoal, estou com um problema. É o seguinte estou fazendo uma aplicação em que eu tenho um ListView, sendo que quando o usuário clica em alguma linha eu abro uma Window com os dados da linha clicada. Porém, ele só está carregando os dados da segunda vez em diante. A entrada de dados eu estou simulando com um array mesmo. Segue o código.

var questionariosDb = new Ext.ListView({
		
        store         : storeData,
        singleSelect  : true,
		autoScroll : true,
		frame : true,
		anchor : '-1,-1',
        columns       : [
            {
                header    : 'Nome do Questionário',
                dataIndex : 'nome',
				renderer : '<span style = "color: white;"></span>'
            },
            {
                header    : 'Início de Vigência',
                dataIndex : 'data',
				xtype: 'datefield'
            },
			{
                header    : 'Tipo de demanda',
                dataIndex : 'tipo'
				
            },
			{
                header    : 'Situação',
                dataIndex : 'situacao'
            }
        ],
		
		listeners : {
			click : function(thisView, index){
				var record = thisView.store.getAt(index);
	
				var formPanel = Ext.getCmp('updateform');
				
				formPanel.selectedRecord = record;
				
                                formPanel.getForm().loadRecord(record);
								
				var w = new Ext.Window ({
					title : '<img src="icons/application.png" />' + '   Questionário - Alterar',
					closeAction : 'hide',
					x:15,
					y:90,
					height : 350,
					width : 500,
					items: [formPanel],
					tbar : tbarWindow
				}).show();
				//console.log(w);
			}
		
		
		}
    });

----------------------------------------------------

var updateform = new Ext.form.FormPanel({
		
        frame       : true,
        id          : 'updateform',
        labelWidth  : 70,
        //xtype       : 'form',
        defaultType : 'textfield',
        buttonAlign : 'center',
       
        labelAlign  : 'top',
        defaults    : {
            anchor : "-5"
        },
        items       : [
             {
				id: 'nome',
                name       : 'nome',
                fieldLabel : 'Nome do Questionário'
            },
            {	
				xtype      : 'datefield',
                name       : 'data',
                fieldLabel : 'Data de início de vigência',
				anchor : '-380'
            },
			{
				xtype : 'checkboxgroup',
				anchor: '100%',
				id: 'tipo',
				name : 'tipo',
				style : 'position:absolute; left:150px; top:-42px;',
				items : [
					
					{
						xtype : 'checkbox',
						fieldLabel : '',
						boxLabel: 'Demanda Legal',
						inputValue : 'DemandaLegal',
				
					}
				]
				
				
			}
			
        ]
	});

Alguma ideia?

#2 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3496 posts
  • LocationBelo Horizonte

Postado 30 October 2014 - 07:06

RodrigoJunior, ao meu ver o problema está na sua lógica, pois antes de criar a Window com o seu Form vc já está tentando carregar os dados no seu Form, desta forma somente na segunda vez que irá funcionar, pois na primeira tentativa não irá carregar os dados, pois o Form ainda não existe (e deveria lançar um erro no console), daí na segunda vez em diante o seu Form já existe então ele consegue fazer isso, tente a lógica abaixo:
var questionariosDb = new Ext.ListView({
    store         : storeData,
    singleSelect  : true,
    autoScroll    : true,
    frame         : true,
    anchor        : '-1,-1',
    columns       : [
        {
            header    : 'Nome do Questionário',
            dataIndex : 'nome',
            renderer : '<span style = "color: white;"></span>'
        },
        {
            header    : 'Início de Vigência',
            dataIndex : 'data',
            xtype: 'datefield'
        },
        {
            header    : 'Tipo de demanda',
            dataIndex : 'tipo'
            
        },
        {
            header    : 'Situação',
            dataIndex : 'situacao'
        }
    ],
    
    listeners : {
        click : function(thisView, index){
            var record = thisView.store.getAt(index);

            var formPanel = Ext.getCmp('updateform');
            
            // CRIANDO A SUA WINDOW SE NECESSARIO, SENDO QUE "winForm" SEJA UMA VARIÁVEL
            // CRIADA COMO A "tbarWindow".
            if(!winForm) {
                winForm = thisView.winForm = new Ext.Window({
                    title : '<img src="icons/application.png" />' + '   Questionário - Alterar',
                    closeAction : 'hide',
                    x:15,
                    y:90,
                    height : 350,
                    width : 500,
                    items: [formPanel],
                    tbar : tbarWindow
                });
            }
            
            formPanel.selectedRecord = record;
            
            formPanel.getForm().loadRecord(record);
                            
            winForm.show();
        }
    }
});
Espero que lhe ajude.

Dica: não utilize IDs fixos, pois não é uma boa abordagem pode lhe causar problemas na aplicação.

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)





0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos