Actualizar multiples textfield desde dropdown

Hola

Soy bastante nuevo en Yii y no he podido dar con la solución a pesar de que he buscado bastante información sobre el tema.

El caso es que tengo un dropdown que debe actualizar 3 textfield al seleccionar un dato; ejecuta la acción perfectamente, pero no me actualiza la forma. Aún no veo cual es el error

en mi vista:




	<div class="row">

		<?php echo $form->labelEx($model,'idtercero'); ?>

		<?php $htmlOptions = array(

			'empty'=>'-- Seleccione la persona --',

			'style'=>'width: 500px;',

			'ajax' => array(

				'type'=>'POST',

				'dataType'=>'json',

				'url'=>$this->createUrl('tercerosLookup'),

				//'data'=>array('idtercero'=>'js:$(\'#Documentos_idtercero\').val()'),

				'success'=>'js:function(data)

					{

						$("#Documentos_xpersona").text(data.xtercero);

						$("#Documentos_ctpislr").text(data.ctpislr);

						$("#Documentos_nporc_ret").text(data.nporc_ret);

					}'

				)

			);

		echo $form->dropDownList($model,'idtercero',$model->getListaTerceros(),$htmlOptions); ?>

		<?php echo $form->error($model,'idtercero'); ?>

		<?php echo $form->textField($model,'xpersona'); ?>

		<?php echo $form->textField($model,'ctpislr'); ?>

		<?php //echo $form->hiddenField($model,'xpersona'); ?>

		<?php //echo $form->hiddenField($model,'ctpislr'); ?>

	</div>



en el controlador:




	public function actionTercerosLookup()

	{

		$datater = Terceros::model()->findByPk($_POST['Documentos']['idtercero']);

		$arr = array();

		$arr[] = array(

			'xtercero'=>trim($datater['xtercero']),

			'ctpislr'=>$datater['ctpislr'],

			'nporc_ret'=>$datater['nporc_iva'],

		);

		echo CJSON::encode($arr);

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

		{

			$id = Yii::app()->request->getParam('idtercero');

			$data = Terceros::model()->findByPk($id);

			$arr = array();

			$arr[] = array(

				'xtercero'=>trim($data['xtercero']),

				'ctpislr'=>$data['ctpislr'],

				'nporc_ret'=>$data['nporc_iva'],

			);

			echo CJSON::encode($arr);

		}*/

	}



Intenta de la sgte forma:

Cuando termines tu solución postea tus correcciones aquí y edita el post como [SOLUCIONADO] para que le sirva a otros.

en mi vista:




	<div class="row">

		<?php echo $form->labelEx($model,'idtercero'); ?>

		<?php $htmlOptions = array(

			'empty'=>'-- Seleccione la persona --',

			'style'=>'width: 500px;',

			'ajax' => array(

				'type'=>'POST',

				'dataType'=>'json',

				'url'=>$this->createUrl('CONTROLADOR-AQUI/tercerosLookup/PARAMETRO-AQUI'),

				//'data'=>array('idtercero'=>'js:$(\'#Documentos_idtercero\').val()'),

				'success'=>'js:function(data)

					{

						$("#Documentos_xpersona").val(data["xtercero"]);

						$("#Documentos_ctpislr").val(data["ctpislr"]);

						$("#Documentos_nporc_ret").val(data["nporc_ret"]);

					}'

				)

			);

		echo $form->dropDownList($model,'idtercero',$model->getListaTerceros(),$htmlOptions); ?>

		<?php echo $form->error($model,'idtercero'); ?>

		<?php echo $form->textField($model,'xpersona'); ?>

		<?php echo $form->textField($model,'ctpislr'); ?>

		<?php //echo $form->hiddenField($model,'xpersona'); ?>

		<?php //echo $form->hiddenField($model,'ctpislr'); ?>

	</div>



en el controlador:




	public function actionTercerosLookup()

	{

		$datater = Terceros::model()->findByPk($_POST['Documentos']['idtercero']);

		$arr = array();


		$arr['xtercero'] = trim($datater['xtercero'];

                $arr['ctpislr'] = $datater['ctpislr'];

                $arr['nporc_ret'] = $datater['nporc_iva'];


		echo CJSON::encode($arr);

}



[/quote]

Buenas.

No tiernes ningún control en tu vista llamado "Documentos_nporc_ret".

Quita esto del success del AJAX, ya que te dará error JavaScript:




$("#Documentos_nporc_ret").text(data.nporc_ret);



Un saludo.