Ir para conteúdo


Foto

Atualizar combobox apartir de um combobox


Melhor Resposta Wemerson Januario , 19 October 2018 - 09:51

já que produtos é uma instancia de store, você pode usuar o método bindStore do combo pra atribuir o store nele.

 

Sobre findField vc precisa pegar o basicForm assim

seuComponentFormPanel.getForm().findField(...)

Vc pode simplificar isso tbm, já que o combo de baixo só tem utilidade se selecionar um item no de cima, então deixa ele desabilitado, e no change do de cima da um enable/setDisabled(false) nele

listeners: {
                    change: function(me, value) {
                           seuForm.getForm().findField('numero_patrimonio').bindStore(produto);
                      // ou seuForm.getForm().findField('numero_patrimonio').getStore().load();
		      // ou seuForm.down('#numero_patrimonio').getStore().load();
		      //ou seuForm.getForm().findField('numero_patrimonio').setDisabled(!value);

                    },
                },
Visualizar todo o conteúdo do post


  • Por favor, faça o login para responder
7 respostas neste tópico

#1 carruda

carruda

    Iniciante

  • Membros
  • Pip
  • 5 posts

Postado 17 October 2018 - 15:07

Prezados, boa tarde!
Tenho um cenario onde um tenho um comboBox e apartir de um item selecionado nesse preciso carregar uma store no segundo combo.

 

Esse é minha store produtos -> var produtos = Ext.create('Ext.ux.GTStore', GTPlanner.stores.produtosalocar);

carregando o form normalmente o produto é carragado no item numero patrimonio

 

Tenho que apartir de um tipo selecionado nesse combo carregar o store do segundo

 

{
                xtype: 'combobox',
                id: 'produto_tipo_desc',
                name: 'produto_tipo_desc',
                store: ['Perifericos', 'Material escritorio', 'Notebook/Desktop', 'Impressoras', 'GPS', 'Cameras', 'Roteadores', 'Tablets'],
                fieldLabel: 'Tipo produto',
                columnWidth: 0.5,
                value: record.get('produto_tipo_desc'),
                margin: '0 5 5 5',
                allowBlank: false,
                listeners: {
                    change: function(me, value) {
                        
                    },
                },
                blankText: 'Por favor, informe o tipo de produto.'
            },

{
                xtype: 'combobox',
                id: 'numero_patrimonio',
                name: 'numero_patrimonio',
                store: produtos,
                valueField: 'numero_patrimonio',
                displayField: 'numero_patrimonio',
                fieldLabel: 'Numero patrimonio',
                columnWidth: 0.5,
                value: record.get('numero_patrimonio'),
                margin: '0 5 5 5',
                allowBlank: false,
                blankText: 'Por favor, selecione o produto.'
            },

 

Conseguem me ajudar por favor!



#2 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 18 October 2018 - 00:33

é passado algum filter para o segundo store conforme o item selecionado? Já pensou em usar data binding ?


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#3 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 18 October 2018 - 00:33

Ext JS 4?


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#4 carruda

carruda

    Iniciante

  • Membros
  • Pip
  • 5 posts

Postado 18 October 2018 - 11:08

Wemerson, bom dia!
Inicialmente não é passado nenhum parametro, apenas preciso que quando houver um change do primeiro combo carregue o segundo, mas na sequencia vou precisar sim de passar paramentros, da forma que esta os dois combos ambos sao carregados ao abrir o form, mas ai o segundo combo so deveria ser carregado ao selecionar alguma opção do primeiro.

Ext JS 4 sim...



#5 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 18 October 2018 - 12:02

Não seria algo assim?


 listeners: {
                    change: function(me, value) {
                      seuForm.findField('numero_patrimonio').getStore().load();
		      //seuForm.down('#numero_patrimonio').getStore().load();
		      //produto.load();

                    },
                },

Feedback:

 

Não sei se estou tão acostumando com MVVM, e acho meio estranho escrever métodos assim de forma declarativa.

Tente separa métodos dos listeners em controllers ou até mesmo como membro da sua classe que está extendendo, fica mais fácil e profissional.

Evite tbm usar id.


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#6 carruda

carruda

    Iniciante

  • Membros
  • Pip
  • 5 posts

Postado 18 October 2018 - 14:35

Wemerson, pois então, tipo que esse projeto ja esta concebido e eu estou pegando ele para alem de aprender inicialmente no futuro dar manutenções e outras melhorias. Então agradeço pela paciencia...

Mas assim, minha variavel produtos ja é uma store com os valores que preciso, quando eu passo produtos no store do numero patrimonio quando o form é carregado ele ja é populado. Eu apenas quero que o combo seja populado apos selecionar algum item do primeiro combo...

 

quando eu tento executar o comando que vc demonstrou acima fala que findField não é uma função.



#7 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 19 October 2018 - 09:51   Melhor Resposta

já que produtos é uma instancia de store, você pode usuar o método bindStore do combo pra atribuir o store nele.

 

Sobre findField vc precisa pegar o basicForm assim

seuComponentFormPanel.getForm().findField(...)

Vc pode simplificar isso tbm, já que o combo de baixo só tem utilidade se selecionar um item no de cima, então deixa ele desabilitado, e no change do de cima da um enable/setDisabled(false) nele

listeners: {
                    change: function(me, value) {
                           seuForm.getForm().findField('numero_patrimonio').bindStore(produto);
                      // ou seuForm.getForm().findField('numero_patrimonio').getStore().load();
		      // ou seuForm.down('#numero_patrimonio').getStore().load();
		      //ou seuForm.getForm().findField('numero_patrimonio').setDisabled(!value);

                    },
                },

  • carruda curtiu isso

Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#8 carruda

carruda

    Iniciante

  • Membros
  • Pip
  • 5 posts

Postado 19 October 2018 - 12:16

Show de bola... ficou assim:

listeners: {
                    change: function(me, value) {
                        var form = me.up('form');
                        form.getForm().findField('descricao').bindStore(produtos);
                        form.getForm().findField('descricao').setDisabled(false);
                    },
                },

Agora vou passar parametro para fazer o filtro da store


  • Wemerson Januario curtiu isso




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

0 membros, 0 visitantes, 0 membros anônimos