Two dependent dropdownlist, maintain information

Hello everyone… I need some experienced help. The history is:

Exist a form into a page for discriminate about registers in the DB. The form has two dropdownlist dependent, a master and a slave, users types and categories from the users types. When the form is complete, and submit, the same page is render again, showing the results in a GridView. The problem here is about the data from the dropdownlist, the two of them. When the page is render again, needs show the previous data selected, the user have to know what search… I can’t doit.

The master/slave are configure with ajax, it works fine! Here is the source…

View Form:




(!empty($_GET['tipo_usuario']))? $tu=$_GET['tipo_usuario'] : $tu=null; //To get the selected data

echo CHtml::dropDownList('tipo_usuario',$tu, array([cliente] => 'Usuario de Internet', [proveedor_privado] => 'Proveedor Sector Comercial', [proveedor_publico] => 'Proveedor Sector Público y Social'), 

   array(

        'empty'=>'Tipo de usuario...', 

        'ajax' => array(

		   'type'=>'POST',

		   'url'=>CController::createUrl('adminPanel/dynamicList'),

		   'update'=>'#categoria',

		   'data'=>array('tipo_usuario'=>'js:this.value'),

		),

	'style'=>'width:30%',

   ));

(!empty($_GET['categoria']))? $cat=$_GET['categoria'] : $cat=array();

echo CHtml::dropDownList('categoria',$cat,array(),array('empty' => 'Categoria...', 'style'=>'width:30%', 'disabled'=>false));



Controller, actionDynamicList function:




public function actionDynamicList()

{

   if(Yii::app()->request->isAjaxRequest)

   {

	echo CHtml::tag('option',array('value'=>''),CHtml::encode('Categoria...'),true);

	if($_POST['tipo_usuario']=='proveedor_privado')

	{

		echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 1'), true);

                echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 2'), true);

                echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 3'), true);

	}else if($_POST['tipo_usuario']=='proveedor_publico'])

	{

		echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 4'), true);

                echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 5'), true);

                echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 6'), true);

	}

   }

}



Could anyone helps me?

Solved…

The way was fill the array of options from a function, where the return depended from the &GET value. Here the solved souce.

View:




(!empty($_GET['tipo_usuario']))? $tu=$_GET['tipo_usuario'] : $tu=null;

echo CHtml::dropDownList('tipo_usuario',$tu, array([cliente] => 'Usuario de Internet', [proveedor_privado] => 'Proveedor Sector Comercial', [proveedor_publico] => 'Proveedor Sector Público y Social'), 

   array(

        'empty'=>'Tipo de usuario...', 

        'ajax' => array(

                   'type'=>'POST',

                   'url'=>CController::createUrl('adminPanel/dynamicList'),

                   'update'=>'#categoria',

                   'data'=>array('tipo_usuario'=>'js:this.value'),

                ),

        'style'=>'width:30%',

   ));

(!empty($_GET['categoria']))? $cat=$_GET['categoria'] : $cat=array();

$id=null;

if(!empty($_GET['tipo_usuario'])){

        if($_GET['tipo_usuario']==$keys['2']) $id=1;

        else if($_GET['tipo_usuario']==$keys['3']) $id=2;

        else $id=0;

}

echo CHtml::dropDownList('categoria',$cat,$this->getCategory($id),array('empty' => 'Categoria...', 'style'=>'width:30%', 'disabled'=>false));



Controller:




public function actionDynamicList()

{

   if(Yii::app()->request->isAjaxRequest)

   {

        echo CHtml::tag('option',array('value'=>''),CHtml::encode('Categoria...'),true);

        if($_POST['tipo_usuario']=='proveedor_privado')

        {

                echo CHtml::tag('option', array('value'=>1), CHtml::encode('Cat 1'), true);

                echo CHtml::tag('option', array('value'=>2), CHtml::encode('Cat 2'), true);

                echo CHtml::tag('option', array('value'=>3), CHtml::encode('Cat 3'), true);

        }else if($_POST['tipo_usuario']=='proveedor_publico'])

        {

                echo CHtml::tag('option', array('value'=>4), CHtml::encode('Cat 4'), true);

                echo CHtml::tag('option', array('value'=>5), CHtml::encode('Cat 5'), true);

                echo CHtml::tag('option', array('value'=>6), CHtml::encode('Cat 6'), true);

        }

   }

}


public function getCategory($id)

{

        $options=null;

        if($id>0)

        {

                if($id==1)$rows = Yii::app()->db->createCommand(array(

                {

                        $options[1]='Cat 1';

                        $options[2]='Cat 2';

                        $options[3]='Cat 3';

                }else if(id=2)'where'=> 'tipo_categoria='.$id,

                {

                        $options[4]='Cat 4';

                        $options[5]='Cat 5';

                        $options[6]='Cat 6';

                }

                return $options;

        }else

                return array();

}



Thanks!