Yii Framework Forum: Filtrar Listbox A Partir Do Dropdownlist E Definir As Informações Em 2 Listbox - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Filtrar Listbox A Partir Do Dropdownlist E Definir As Informações Em 2 Listbox Rate Topic: -----

#1 User is offline   Diegorgp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 27-July 12

Posted 11 September 2012 - 02:26 PM

Boa tarde pessoal!

Vasculhei muito no fórum e no google maneiras de filtrar listbox com o dropdownlist, até achei bastante coisa, mas não consegui implementar.

Bom, vou explicar o que eu estou querendo fazer:

1° Usuário seleciona uma programa no dropdownlist(Sendo que as opções vem do banco de dados)

2° Filtra o que aparece em 2 listbox, sendo que em 1 é a lista de pessoas que não pertencem aquele programa e no outro é a lista de pessoas que pertencem aquele programa. (De inicio todas as pessoas não irão pertencer, puxando do banco de dados, ou seja, se o usuário trocar o programa, todas as pessoas irão aparecer novamente pertencendo ou não aquele programa escolhido).

3° Usuário clica nos botões >>>> ou <<<< para gerenciar as pessoas que pertencem ou não aquele programa, ou se algum iluminado ae também souber fazer o drag and drop (porque eu não consegui =/ )

4° Botão pra salvar as modificações feitas pelo usuário, (provavelmente farei salvar tambem na hora que trocar de programa.


Attached File  relaciona prog e responsa.bmp (1.07MB)
Number of downloads: 25


Pessoal, eu sei que são várias dúvidas insanas.. hehe.. não to pedindo pra ninguém fazer pra mim não, mas qualquer luz que voces puderem me dar ae.. já é de grande ajuda.. to travado nisso ae.. =/

Se alguém tiver alguma outra idéia tambem.. do que eu possa usar ou fazer.. sei lá.. to meio perdido.. hehe

Valeu galera!!!

Abraços,
Diego Rodrigo
0

#2 User is offline   Diegorgp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 27-July 12

Posted 13 September 2012 - 12:51 PM

Nenhuma idéia galerinha? :(
0

#3 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 801
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 13 September 2012 - 06:57 PM

Diego,

Deixa eu ver se entendi, me corrija caso eu esteja errado.

Vai ter um combobox com os nome dos programas, cada programa vai ter diferentes pessoas cadastrada.

Quando selecionar 1 programa pelo combobox, vai listar todas as pessoas na lista do [Não Pertence], assim você vai seleciona as pessoas que vai para outra lista [Pertence], e depois salvar esta listagem?

Se for está lógica, vou falar meio que um resumo do que irá fazer.

O combobox você vai pòpular normalmente pelo banco de dados.
Ao selecionar 1 programa, você vai precisar fazer isso em javascript, usando o $.ajax() do jQuery, para que seja enviado o ID do programa, e buscando somente as pessoas deste programa, ao retornar os dados usando o $.ajax() você popula a lista de Não Pertence.

Faça essa parte primeiro, depois vejamos como mandar de uma lista para outra usando o drag'n'drop, e salvar os dados.
Newerton Vargas de Araújo
0

#4 User is offline   Darlecio Almeida 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 02-May 11
  • Location:C. do Coité - BA

Posted 16 September 2012 - 10:14 PM

opa!

Dar uma olhada nesse link ver se tira alguma ideia achei interessante o template devo trabalhar nele esses dias caso eu consiga colocar posto aqui pra você o MultiSelect

MultiSelect
0

#5 User is offline   Diegorgp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 27-July 12

Posted 17 September 2012 - 08:49 AM

View PostNewerton, on 13 September 2012 - 06:57 PM, said:

Diego,

Deixa eu ver se entendi, me corrija caso eu esteja errado.

Vai ter um combobox com os nome dos programas, cada programa vai ter diferentes pessoas cadastrada.

Quando selecionar 1 programa pelo combobox, vai listar todas as pessoas na lista do [Não Pertence], assim você vai seleciona as pessoas que vai para outra lista [Pertence], e depois salvar esta listagem?

Se for está lógica, vou falar meio que um resumo do que irá fazer.

O combobox você vai pòpular normalmente pelo banco de dados.
Ao selecionar 1 programa, você vai precisar fazer isso em javascript, usando o $.ajax() do jQuery, para que seja enviado o ID do programa, e buscando somente as pessoas deste programa, ao retornar os dados usando o $.ajax() você popula a lista de Não Pertence.

Faça essa parte primeiro, depois vejamos como mandar de uma lista para outra usando o drag'n'drop, e salvar os dados.


Opa Newerton!

É mais o menos isso mesmo...
Usuário seleciona o programa;
Traz todos os responsáveis cadastrados (fazendo um check se o responsável pertence ou não);
Os que forem trabalhar nesse programa vão para a direita;
Ao salvar, criar um relacionamento entre esse programa e os responsáveis pertencentes;
Estes responsáveis podem trabalhar em vários programas diferentes;

Vou fazer essa primeira parte como voce disse!! Valeu brother!

Quote

Darlécio Almeida Posted Today, 12:14 AM

opa!

Dar uma olhada nesse link ver se tira alguma ideia achei interessante o template devo trabalhar nele esses dias caso eu consiga colocar posto aqui pra você o MultiSelect

MultiSelect


Darlécio, muito bacana esse MultiSelect!! Aliás, todas as ferramentas desse link ae, muito bom! Vou dar uma olhada!! Valeuu!

Obrigado galera!

Assim que eu fizer essa primeira parte, posto aqui o que eu fiz e pergunto sobre o Drag and Drop! XD

Abraços,
Diego Rodrigo
0

#6 User is offline   Diegorgp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 27-July 12

Posted 25 September 2012 - 07:16 AM

Newerton,

Uma dúvida aqui cara, esse código ta me trazendo o dropdown com as opções que estão no banco:

<?php echo $form->labelEx($model,'tab_prog_idProg'); ?>
<?php echo $form->dropDownList($model, 'tab_prog_idProg', 
CHtml::listData(programa::model()->findAll(
array(
'order'=> 'prog ASC')),
'idProg', 'prog'),
array(
'prompt'=>'Select Name...',
'style'=>'width:200px')); ?>


Onde e como nesse código ai eu chamo a função que serviria como "onchange", pra na hora que eu selecionar o programa ele atualizar pra mim o listbox com informações do BD?

Outra coisa, no yii seria mais comum fazer essa função na view ou no controller da view?

Obrigado!

Abraços,
Diego Rodrigo Gil de Paula
0

#7 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 801
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 26 September 2012 - 12:15 PM

Diego,

Segue um exemplo para você testar:

Seu dropdown:
$lista = CHtml::listData(programa::model()->findAll(array('order'=> 'prog ASC')),'idProg', 'prog');
echo $form->dropDownList($model, 'tab_prog_idProg', $lista, array('prompt'=>'Select Name...','style'=>'width:200px',
'ajax'=>  array(
	  'type'=>'POST',
	  'dataType'=>'json',
	  'url'=>Yii::app()->createUrl('programa/listaresponsavel'),
	  'success'=>'function(data){
			$('select#responsavel').html(data);
	  }',
	  'data' => array('id' => 'js:$(this).val()')
)
));


Vai precisar criar um action dentro do controller que é mostrado os combobox dos programas:

public function actionListaResponsavel(){
	$id = (int) $_POST['id'];
	$list = Responsavel::model()->findAll(array('condition' = 'programa_id = :programa_id', 'params' => array(':programa_id' => $id)));
	$list = CHtml::listData($list, 'responsavel_id', 'nome');
	
	echo CHtml::tag('option', array('value' => ''), CHtml::encode('Selecione'), true);
	foreach ($list as $value => $name) {
		echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
	}
}

Newerton Vargas de Araújo
0

#8 User is offline   Diegorgp 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 27-July 12

Posted 18 October 2012 - 08:29 AM

View PostNewerton, on 26 September 2012 - 12:15 PM, said:

Diego,

Segue um exemplo para você testar:

Seu dropdown:
$lista = CHtml::listData(programa::model()->findAll(array('order'=> 'prog ASC')),'idProg', 'prog');
echo $form->dropDownList($model, 'tab_prog_idProg', $lista, array('prompt'=>'Select Name...','style'=>'width:200px',
'ajax'=>  array(
	  'type'=>'POST',
	  'dataType'=>'json',
	  'url'=>Yii::app()->createUrl('programa/listaresponsavel'),
	  'success'=>'function(data){
			$('select#responsavel').html(data);
	  }',
	  'data' => array('id' => 'js:$(this).val()')
)
));


Vai precisar criar um action dentro do controller que é mostrado os combobox dos programas:

public function actionListaResponsavel(){
	$id = (int) $_POST['id'];
	$list = Responsavel::model()->findAll(array('condition' = 'programa_id = :programa_id', 'params' => array(':programa_id' => $id)));
	$list = CHtml::listData($list, 'responsavel_id', 'nome');
	
	echo CHtml::tag('option', array('value' => ''), CHtml::encode('Selecione'), true);
	foreach ($list as $value => $name) {
		echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
	}
}



Opa Newerton!

Tudo blz?

Desculpa demora da resposta, mas eu estava afastado..

Cara, eu tentei, mas aqui não deu certo não, aqui só fica em branco acho que devo estar fazendo algo de errado, olha só, View:
$lista = CHtml::listData(programa::model()->findAll(array('order'=> 'prog ASC')),'idProg', 'prog');
echo $form->dropDownList($model, 'tab_prog_idProg', $lista, array('prompt'=>'Selecione','style'=>'width:200px',
'ajax'=>  array(
          'type'=>'POST',
          'dataType'=>'json',
          'url'=>Yii::app()->createUrl('programa/listaresponsavel'),
          'success'=>'function(data){
                      $('select#responsavel').html(data);
}',
'data' => array('id' => 'js:$(this).val()'))
));


Fiquei na dúvida se tinha aquela aspas simples antes do function e depois da }, mas testei com ou sem e deu na mesma..

Controller:
public function actionListaResponsavel(){
        $id = (int) $_POST['id'];
        $list = Responsavel::model()->findAll(array('condition' = 'idProg = :idProg', 'params' => array(':idProg' => $id)));
        $list = CHtml::listData($list, 'idRpons', 'nom');
        
        echo CHtml::tag('option', array('value' => ''), CHtml::encode('Selecione'), true);
        foreach ($list as $value => $name) {
                echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
        }
}


Tem alguma idéia do que possa estar errado? Perdão pela ignorância, mas não entendi mesmo..

Desde já agradeço!

Abraços,
Diego Rodrigo
0

#9 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 801
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 18 October 2012 - 08:24 PM

Diego,

Faz o testes usando o firebug na aba Console, veja se o dropdowlist está fazendo a requisição para o controler programa/listaresponsavel.

Corrigi uns erro do dropdownlist, e adicionei um console.log() para você ver na aba Console do Firebug se está retornando os dados.

$lista = CHtml::listData(Programa::model()->findAll(array('order'=> 'prog ASC')),'idProg', 'prog');
echo $form->dropDownList($model, 'tab_prog_idProg', $lista, array('prompt'=>'Selecione','style'=>'width:200px',
'ajax'=>  array(
          'type'=>'POST',
          'url'=>Yii::app()->createUrl('programa/listaresponsavel'),
          'success'=>'function(data){ 
				console.log(data);
				$("select#responsavel").html(data);
			}',
		  'data' => array('id' => 'js:$(this).val()'))
));

Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users