Hola a todos les expongo este problema y agradezco mucho la ayuda que me puedan dar:
Tengo en mi base de datos varios combos dinamicos, en especial el de clientes donde hay muchos clientes, pasan de 2000 y se me hace engorroso seleccioar uno entre tantos, para eso utilizo la extensión EChosen-1.5.1, que realmente funciona bien las busqueda que hace, el problema es que al selecionar el cliente en el 1er dropDownList, no muestra los correspondientes en el segundo dropDownList, pero cuando doy F12 en el debug si los muestra, o sea, funciona, ya que antes de usar la extension si funcionaba bien, aqui muestro como trabajo los combos dependientes:
Tengo una tabla clientes y una firmantes relacionadas uno a muchos por CodCliente, que es llave primaria en la tabla clientes y en la tabla firmantes tengo el campo IdCliente para la relacion.
En el controlador pongo la funcion: Actualizar firmantes:
public function actionActualizarFirmantes() {
$model = Clientes::model()->findByPk($_POST['idCodigo']);
//llenar firmantes
$data = CHtml::listData($model->firmantes, 'CI', 'Nombre');//aqui busco en la tabla firmantes los CI y los Nombres del Cliente seleccionado en la tabla clientes
$firmantes = "";
foreach ($data as $value => $name)
$firmantes .= CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
// return data (JSON formatted)
echo CJSON::encode(array(
'firmantes' => $firmantes
));
}
en el form la extension EChosen la pongo de esta forma:
<?php
$this->widget('ext.EChosen.EChosen', array(
'target' => 'select',
'useJQuery' => true,
'debug' => false,
));
?>
En el form:
Estos son los combos:
Primer combo, selecciono el cliente:
<td colspan="3" title="Selecione el cliente">
<?php echo $form->labelEx($model, 'Cliente'); ?>
<?php
echo $form->dropDownList($model, 'CodCliente', CHtml::listData(Clientes::model()->findAll(array('order' => 'Descripcion')), 'CodCliente', 'Descripcion'), array(
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('datossal/actualizarFirmantes'),
'dataType' => 'json',
'data' => array('idCodigo' => 'js:this.value'),
'success' => 'function(data) {
$("#Datossal_CI").html(data.firmantes);
}')
)
);
?>
<?php echo $form->error($model, 'CodCliente'); ?>
</td>
Segundo combo, donde se debe mostrar los nombres de las personas relacionadas con ese cliente seleccionado
[code]
<td title="Al seleccionar el cliente se muestra los autorizados a firmar facturas">
<?php echo $form->