[RESUELTO] Actualizar dos Combos combinados desde uno

Hola comunidad un saludo para todos, de nuevo con una duda y esperando y agradeciendo por adelantado sus sabias sugerencias para resolver este tema:

El problema es que tengo en mi sistema la siguiente situación:

Tengo una tabla llamada entidades y otra tabla puntoventas, relacionadas entres por el campo CodUEB que es llave principal en la tabla entidades, la relación es uno a muchos de entidades para puntoventas y en mi forma Datossal que es donde las voy a usar, tengo dos combos (dropDownList[size="2"]), combinados, o sea cuando selecciono la entidad, me aparecen los Puntos de Ventas que corresponden a esa entidad, para ello hice lo siguiente:[/size]

[size="2"]En mi controlador de de Datossal hice lo siguiente:[/size]





public function actionActualizarPuntoventas()

{

		$model = Entidades::model()->findByPk($_POST['idCod']);

				  			

	//llenar Puntos Ventas

		$data = CHtml::listData($model->puntoventas,'CodPVen','Descripcion');            

		$puntoventas = "";

		foreach($data as $value=>$name)

		$puntoventas .= CHtml::tag('option',

		array('value'=>$value),CHtml::encode($name),true);  

	               

 	// return data (JSON formatted)

		echo CJSON::encode(array(

			'puntoventas'=>$puntoventas

		));

}



[size="2"]y en la forma de datossal, hice esto[/size]





<td width="70"><div align="left"><?php echo $form->labelEx($model,'Entidad o UEB'); ?><span class="row"><?php echo $form->dropDownList($model,'CodUEB',  

	CHtml::listData(Entidades::model()->findAll(array('order'=>'NEnt')), 'CodUEB', 'NEnt'),

	array(                              

			'ajax' => array(

			'type'=>'POST',

			'url'=>CController::createUrl('datossal/actualizarPuntoventas'),

			'dataType'=>'json',

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

			'success'=>'function(data) {

			$("#Datossal_CodPVen").html(data.puntoventas); 

			}') 

	)

	); ?> <?php echo $form->error($model,'CodUEB'); ?></span></div></td>

    <td width="43"><?php echo $form->labelEx($model,'Punto Venta'); ?><?php echo $form->dropDownList($model,'CodPVen',

    array()); ?><?php echo $form->error($model,'CodPVen'); ?></td>	



[size="2"]Con esto me hace lo que dije anteriormente, pero ahora tengo una tercera tabla llamadas facturadores, relacionada de la misma forma que [/size]puntoventas [size="2"]con entidades, y quiero [/size]también[size="2"] actualizar el combo (dropDownList) de esta tabla, o sea cuando seleccione la entidad en el como Entidades quiero me muestre los puntos de ventas(ya lo hace) y [/size]también[size="2"] los facturadores pertenecientes a esa entidad.[/size]

[size="2"]Nota: Quiero que al seleccionar la entidad me muestre los puntos de ventas y los facturaradores de la entidad seleccionada en cada combo respectivamente.[/size]

Casi lo tienes hecho.

En controller puedes tener


public function actionActualizarCombos()

{

                $model = Entidades::model()->findByPk($_POST['idCod']);

                                                        

        //llenar Puntos Ventas

                $data = CHtml::listData($model->puntoventas,'CodPVen','Descripcion');            

                $puntoventas = "";

                foreach($data as $value=>$name)

                $puntoventas .= CHtml::tag('option',

                array('value'=>$value),CHtml::encode($name),true);  


        //llenar Facturadores

                $data = CHtml::listData($model->facturadores,'CodFac','Descripcion');//Debes tener una relación o una función llamada facturadores que te traiga los facturadores de la entidad

                $facturadores = "";

                foreach($data as $value=>$name)

                $facturadores .= CHtml::tag('option',

                array('value'=>$value),CHtml::encode($name),true);  

                           

        // return data (JSON formatted)

                echo CJSON::encode(array(

                        'puntoventas'=>$puntoventas,

                        'facturadores'=>$facturadores,

                ));

}

y en la forma


<td width="70"><div align="left"><?php echo $form->labelEx($model,'Entidad o UEB'); ?><span class="row"><?php echo $form->dropDownList($model,'CodUEB',  

        CHtml::listData(Entidades::model()->findAll(array('order'=>'NEnt')), 'CodUEB', 'NEnt'),

        array(                              

                        'ajax' => array(

                        'type'=>'POST',

                        'url'=>CController::createUrl('datossal/actualizarCombos'),

                        'dataType'=>'json',

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

                        'success'=>'function(data) {

                        $("#Datossal_CodPVen").html(data.puntoventas);

                        $("#Datossal_CodFac").html(data.facturadores);

                        }') 

        )

        ); ?> <?php echo $form->error($model,'CodUEB'); ?></span></div></td>

    <td width="43"><?php echo $form->labelEx($model,'Punto Venta'); ?><?php echo $form->dropDownList($model,'CodPVen',

    array()); ?><?php echo $form->error($model,'CodFac'); ?></td> 

    <td width="43"><?php echo $form->labelEx($model,'Facturadores'); ?><?php echo $form->dropDownList($model,'CodFac',

    array()); ?><?php echo $form->error($model,'CodFac'); ?></td> 

Ok [size="2"]a18327 gracias por responder, no pensaba que se podia hacer en la misma funcion, yo intentaba hacerlo con dos [/size]funciones[size="2"] distintas, pero en la forma me trababa, voy a probar y gracias[/size][size="2"]