Cjuidialog + Update + Cgridview ? Ayuda

Buenas tardes :D

bueno tengo mi gridview de un modelo diferente en la vista de mi modelo principal





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

    'id'=>'pr-hocc-grid',

      'dataProvider'=>$dataProviderHoras,

    //'dataProvider'=>$model_pr_hocc->search(),

    //'filter'=>$model_pr_hocc,

    'columns'=>array(

       

        

        array ('name'=>'ceco_codi','value'=>'$data->ge_tceco->ceco_nomb','type'=>'text'),

        'hocc_hors',

        'esta_codi',

       array(

            'class'=>'CButtonColumn',

            'updateButtonUrl'=>'Yii::app()->createUrl("/pr_hocc/update&id=$data->hocc_codi" )',

             'buttons'=>array(

             'delete'=>  array(

                                'visible'=>'false',

                        ),

             'view'=>  array(

                                'visible'=>'false',

                        ),


                ),

        ),

    ),

)); ?>




en el controlador




public function actionView($id)

	{

		

    $model_pr_hocc=new Pr_hocc;


/* cgridview */


	$dataProviderHoras=new CActiveDataProvider(Pr_hocc::model(), array(

'keyAttribute'=>'hocc_codi',

'criteria'=>array(

'condition'=>'peho_codi='.$id,

),

));


if(Yii::app()->request->isAjaxRequest){


$peho_codi = $_GET[0];

Yii::log("\nAJAX_REQUEST\nPROVOCADO_POR_EL_UPDATE_AL_CGRIDVIEW_HORAS"

."\npeho_codi seleccionada es=".$peho_codi

,"info");


echo CJSON::encode($dataProviderHoras);

}




/**/




    if(isset($_POST['Pr_hocc']))

    {


    	 $model_pr_hocc->attributes=$_POST['Pr_hocc'];

    	  $model_pr_hocc->peho_codi = $id;

    	  if($model_pr_hocc->save())

    	  	$this->redirect(array('view','id'=>$id));

    }





		$this->render('view',array(

			'model'=>$this->loadModel($id),

			'model_pr_hocc'=>$model_pr_hocc,

			'dataProviderHoras'=>$dataProviderHoras,

		));

	}




lo que quiero hacer es que cuando oprima el botón de modificar (el del lápiz) este me abra un CJuiDialog y me deje modificar hay mismo … recordar que tengo el gridview en una vista de otro modelo por eso le pongo la url al botón de update pero lo que quiero es q no me lleve a otra vista sino que me abra un dialogo :D podrían ayudarme por favor

Buenas.

1- En tu CGridView añades esto (el CGridView tendrá que estar dentro de un formulario):




'buttons'=>array('update'=>

                                                array(

                                                    'url'=>'Yii::app()->createUrl("controlador/ajaxUpdate", array("id"=>$data->id,"asDialog"=>1))',

                                                    'options'=>array(  

                                                                'ajax'=>array(

                                                                        'type'=>'POST',

                                                                        'url'=>"js:$(this).attr('href')", 

                                                                        'update'=>'#nombreContenedorDatos',

                                                                       ),

                                                                    ),

                                                     ),

                                                   ), 

2- En tu controlador/ajaxUpdate:




Yii::app()->clientscript->scriptMap['jquery.js'] = false;               

                                                                                

        

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

        {

              if(!empty($_GET['asDialog']))                                     

                echo CHtml::script('$("#nombreDialogo").modal("show");');        

              

            $model = $this->loadModel($id);

              

            $this->renderPartial('update', 

                                array(

                                    'model'=>$model,

                                  ),false,true);                                

            

              

            Yii::app()->end();                                                                                              

        }

En tu diálogo tienes que tener un botón AJAX que actualice tus datos y refresque tu CGridview y listo.

Un saludo.

Que tal Amigo me parece bien interesante el ejemplo que pusiste, estoy tratando con algo parecido y no encuentro una buena solucion. Podrías pasar el ejemplo completo?

Gracias.