Uso De Cjuiautocomplete Y Cgridview Para Filtrar

Buenos dias, este es mi caso, necesito hacer algun tipo de autocomplete en los text field que Yii genera automaticamente en la vista admin… ya mi filtrado de search esta perfecto (Los datos vienen de tablas relacionadas) pero me falta agregarle un autocomplete… vi este tutorial: http://www.yiiframework.com/wiki/162/a-simple-action-for-cjuiautocomplete/ y la verdad parece bastante facil, lo que no entiendo es como anexar ese witget CJuiAutoComplete al witget CGridView de la vista que ya tengo.

Con este hago el filtrado

$this->widget(‘zii.widgets.jui.CJuiAutoComplete’, array(…

y con este hago el autocomplete

$this->widget(‘zii.widgets.grid.CGridView’, array(…

sabran si se pueden combinar o algo asi?.

No se su me supe explicar. aqui estan mis cosas a ver si alguien puede ayudarme, muchas gracias.

Para darles una idea son tablas relacionadas, donde me traigo datos a travez de las relaciones. y necesito ahora que antes de hacer la busqueda, se pueda hacer algun tipo de autocomplete

Mi Modelo


class TblEstructura extends CActiveRecord

{

	/**

	 * @return string the associated database table name

	 */


	/******************************************************************* OK *********************************************************************************/


	public $varDenominacionTE;

	public $varParroquiaTE;

	public $varIdpersonaTE;


	public function tableName()

	{

		return 'tbl_estructura';

	}


	/**

	 * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('idpadre, idtipoestructura, idparroquia, idmaximaautoridad, denominacion, ubicacionfisica, paginaweb, telefono', 'required'),

			array('idpadre, idtipoestructura, idparroquia, idmaximaautoridad, codigoonapre, estatusreg', 'numerical', 'integerOnly'=>true),

			// The following rule is used by search().

			// @todo Please remove those attributes that should not be searched.

			array('id, idpadre, idtipoestructura, idparroquia, idmaximaautoridad, codigoonapre, denominacion, idtipoestructura0.denominacion, ubicacionfisica, paginaweb, telefono, estatusreg, varDenominacionTE, varParroquiaTE, varIdpersonaTE', 'safe', 'on'=>'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

			'tblSeguimientoproyectos' => array(self::HAS_MANY, 'TblSeguimientoproyecto', 'idestructura'),

			'idparroquia0' => array(self::BELONGS_TO, 'TblParroquia', 'idparroquia'),

			'idmaximaautoridad0' => array(self::BELONGS_TO, 'TblMaximaautoridad', 'idmaximaautoridad'),

			'idtipoestructura0' => array(self::BELONGS_TO, 'TblTipoestructura', 'idtipoestructura'),

			'tblDependenciases' => array(self::HAS_MANY, 'TblDependencias', 'idestructura'),

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'id' => 'numero identificador de estructura\r\n',

			'idpadre' => 'Idpadre',

			'idtipoestructura' => 'Idtipoestructura',


			'idparroquia' => 'Idparroquia',

			'idmaximaautoridad' => 'Idmaximaautoridad',

			'codigoonapre' => 'codigo asignado por la onapre',

			'denominacion' => 'nombre de la estructura',


			'idtipoestructura0.denominacion' => 'Descripcion Tipo Estructura',

			'idparroquia0.parroquia' => 'Parroquia',

			'idmaximaautoridad0.idpersona'=>'Maxima Autoridad',


			'ubicacionfisica' => 'direccion.',

			'paginaweb' => 'direccion de la pagina web',

			'telefono' => 'numero de telefono',

			'estatusreg' => 'estatus en el que encuentra el registro (activo - inactivo)',

		);

	}


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 *

	 * Typical usecase:

	 * - Initialize the model fields with values from filter form.

	 * - Execute this method to get CActiveDataProvider instance which will filter

	 * models according to data in model fields.

	 * - Pass data provider to CGridView, CListView or any similar widget.

	 *

	 * @return CActiveDataProvider the data provider that can return the models

	 * based on the search/filter conditions.

	 */


	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;


		// search with 'idt1' relation

		$criteria->with = array('idtipoestructura0','idparroquia0','idmaximaautoridad0.idpersona0');

    		$criteria->together = true;




		$criteria->compare('id',$this->id);

		$criteria->compare('idpadre',$this->idpadre);

		$criteria->compare('idtipoestructura',$this->idtipoestructura);

		$criteria->compare('idparroquia',$this->idparroquia);

		$criteria->compare('idmaximaautoridad',$this->idmaximaautoridad);

		$criteria->compare('codigoonapre',$this->codigoonapre);

		$criteria->compare('t.denominacion',$this->denominacion,true);

		$criteria->compare('ubicacionfisica',$this->ubicacionfisica,true);

		$criteria->compare('paginaweb',$this->paginaweb,true);

		$criteria->compare('telefono',$this->telefono,true);

		$criteria->compare('estatusreg',$this->estatusreg);

		

		$criteria->compare('idparroquia0.parroquia',$this->varParroquiaTE,true);

		$criteria->compare('idtipoestructura0.denominacion',$this->varDenominacionTE,true);

		$criteria->compare('idpersona0.nombre',$this->varIdpersonaTE,true);


		//$criteria->compare('idtipoestructura0.varDenominacionTE',$this->denominacion,true);

		//$criteria->compare('idtipoestructura0',$this->denominacion);

		


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

			'pagination'=>array('pageSize'=>4),

		));

	}

Mi vista Admin


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'tbl-estructura-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		//'id',

		'idpadre',

		//'idtipoestructura',

		//'idparroquia', Se cambio para mostrar la relacion con tbl_parroquia

		array('name'=>'idparroquia0.parroquia',

		   'value'=>'$data->idparroquia0->parroquia',

		   'filter'=>CHtml::activeTextField($model,'varParroquiaTE')

		   ),

		//'idmaximaautoridad',

		array('name'=>'idparroquia0.maximaautoridad',

		   'value'=>'$data->idmaximaautoridad0->idpersona0->nombre',

		   'filter'=>CHtml::activeTextField($model,'varIdpersonaTE')

		   ),

		'codigoonapre',

		'denominacion',

		//'idtipoestructura', Se cambio para mostrar la relacion con tbl_tipoestructura

		array('name'=>'idtipoestructura0.denominacion',

		   'value'=>'$data->idtipoestructura0->denominacion',

		   'filter'=>CHtml::activeTextField($model,'varDenominacionTE')

		   ),

		/*

		'ubicacionfisica',

		'paginaweb',

		'telefono',

		'estatusreg',

		*/

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>

Mmmmmm veamos si lo siguiente te sirve, agrega una nueva columna o modifica alguna con:




array(

    'header'=>'Autocomplet',

    'type'=>'raw',

    'value'=>function($data) { 

        $this->widget('zii.widgets.jui.CJuiAutoComplete', array(....

    },

)



<_<