Hola amigo revisa esto que te voy a enviar, para tu problema:
En el controlador has esta funcion y agrega la accion a tus rules del controlador:
public function actionActualizarSector() {
$model = Sector::model()->findByPk($_POST['idCodigosector']);
//llenar Subsector
$data = CHtml::listData($model->subsector, 'idSubsector', 'Campo_nombre_del_subsector_a_mostrar en la tabla subsector');
$subsector = "";
foreach ($data as $value => $name) {
$subsector .= CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
}
// return data (JSON formatted)
echo CJSON::encode(array(
'subsector' => $subsector
));
}
El la vista has este script:
<script>
$(function() {
$.ajax({
url: 'index.php?r=Sector/actualizarSector',
type: 'POST',
dataType: 'json',
data: {
"idCodigosector": $('#Sector_idSector').val()
},
success: function(data) {
$("#Sector_idSubsector").html(data.subsector);
}
});
});
</script>
y luego esto para llenar los drop:
<td title="Selecione Sector">
<?php echo $form->labelEx($model, 'idSector'); ?>
<?php
echo $form->dropDownList($model, 'idSector', CHtml::listData(Sector::model()->findAll(array('order' => 'Campo_nombre_del_sector_a_mostrar')), 'idSector', 'Campo_nombre_del_sector_a_mostrar'), array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('Sector/actualizarSector'),
'dataType' => 'json',
'data' => array('idCodigosector' => 'js:this.value'),
'success' => 'function(data) {
$("#Sector_idSubsector").html(data.subsector);
}')
)
);
?>
<?php echo $form->error($model, 'idSector'); ?>
</td>
//Con este otro llenas los subsectores
<td>
<?php echo $form->labelEx($model, 'idSubsector'); ?><?php echo $form->dropDownList($model, 'idSubsector', array()); ?>
<?php echo $form->error($model, 'idSubsector'); ?>
</td>
Ojala resuelvas con esto, yo siempre utilizo esta via y me da resultados.
Aqui debe haber una relacion entre los sectores y los subsectores donde a un sector le corresponda uno o varios subsectores, al escoger un sector, solo te mostrara en el otro drow los subsectores correspondientes