Preencher Dropdownlist [Resolvido]


(Vilassite) #1

Pessoal, pretendo listar todos os materiais depois de escolher o serviço. A minha query:




                $qry='

                select Id, Nome 

                    from materiais mt 

                    where not exists 

                    (Select null 

                    MaterialId 

                    from materiais_servicos ms

                    where ms.MaterialId = mt.Id and ms.ServicoId='.'"'.$_POST['ServicoId'].'")';

                        

		$result = Yii::app()->db->createCommand($qry)->queryAll();



Nao venho pedir ajuda sobre esta query. O que pretendo é preencher a segunda dropdowlist com o resultado desta query.

Tenho a primeira Dropdownlist para escolher o "Servico" e a segunda Dropdownlist irá conter todos os materiais do resultado da query.

Como é que faço para passar o valor do ServicoId para a query e dessa forma preencher a segunda Dropdownlist? Do genero, "onChange o Servico" atualiza a segunda DropdownList (Materiais).


(Vilassite) #2

O Objetivo é atualizar o $data como o resultado da query. Se assim nao for ira listar todos os materiais e nao quero isso, so quero que mostre os materiais que ainda nao foram inseridos na tabela materiais_servicos para determinado serviço.




// http://www.yiiframework.com/extension/echmultiselect/#hh3

$data= CHtml::listData(Materiais::model()->findAll(),'Id','Nome');

$this->widget('ext.widgets.EchMultiSelect.EchMultiselect', array(

    'model' => $model,

    'dropDownAttribute' => 'MaterialId',     

    'data' => $data,

    'dropDownHtmlOptions'=> array(

        'style'=>'width:150px;',

    ),





(Vilassite) #3

É desta que vou ficar sem resposta… :rolleyes:


(Thiagosnider) #4

Olha to sem tempo agora para escrever os códigos, mas resolveria fazer assim:

1 - Criar no controller uma action que faz a query baseada no resultado, ela faz a query e da um renderpartial de uma view que pega a query e cria um dropdownlist.

2 - Na view que tem os dropdownlist crie um javascript que pegue o valor do primeiro dropdownlist e mande por ajax para a action criada no item 1. E também se acontecer o evento sucess ele atualizar uma div.

3 - No DropDownList 2 você coloca dentro de uma div que será atualizada pelo script ajax que chamou.


(Vilassite) #5

Pois! Tem que aprofundar os meus conhecimentos… Gostava mesmo de um exemplo prático. Valeu Thii!


(Allanfreitasci) #6

To meio atrasado, mas fica ai de referência:

http://www.yiiframework.com/wiki/24/

O cara mostra uma abordagem de como fazer o que você quer.


(Vilassite) #7

Allan, obrigado pela dica. Mas já tinha resolvido este problema. Podia existir uma opção para marcar o tópico como resolvido.

Abraço!


(Allanfreitasci) #8

Tranquilo, altera o titulo com "[Resolvido] Seu Titulo".