actualizar grid view en un modal y scrip se genera varios eventos

Hola buen dia,

He estado trabajando con yii y yiibooster, me ha surgido un problema tengo un modal en el cual tengo unos selects y un gridview en el cual hago un submit mediante un ajaxbutton para insertarlo en la bd pero no me actualiza el gridview aunque ya he llamado a la funcion correspondiente, eso es por comenzar la otra cosa que me pasa es que si abro el model y lo cierro las funciones js se repiten el mismo numero de veces que he abierto la ventana, como dato ya he intentado en unbind y el undelegate y no he obtenido buenos resultados. Sin mas que explicar les dejo mis códigos.

Esto es lo que renderizo en el modal.




<?php


Yii::app()->clientScript->registerScript('actualizarGrid', "

$('#actuallizarDetalleSolicitud').click(function(){

        $.fn.yiiGridView.update('lecture-grid');

        return false;

});


");


 ?>


<!-- Popup Header -->

<div class="modal-header">

    Agregar Fallas

</div>

<!-- Popup Content -->

<div class="modal-body">


<?php $form=$this->beginWidget('booster.widgets.TbActiveForm',array(

	'id'=>'detalle-solicitud-form',

	'enableAjaxValidation'=>false,

)); ?>


<div class="row">


<?php echo $form->errorSummary($model); ?>


		<div class="col-md-3 form-group">

		<?php echo CHtml::hiddenField('idsolicitudGarantia' , $idsolicitudGarantia , array('id' => 'idsolicitudGarantia')); ?>

		<?php echo $form->labelEx($model,'idCategoriaFalla', array('class'=>'control-label')); ?>

		<div>

		<?php echo $form->dropDownList($model,"idCategoriaFalla",$this->obtenerOpcionesCategoriasFallas(),

		array(

			'ajax'=>array(

				'type'=>'POST',

				'url'=>CController::createUrl('DetalleSolicitud/SelectCategoria'),

				'update'=>'#'.CHtml::activeId($model,'idTipoFalla'),

				'beforeSend' => 'function(){

					$("#DetalleSolicitud_idTipoFalla").find("option").remove();

					$("#DetalleSolicitud_idfalla").find("option").remove();

				}'

				),

			'prompt'=>'Seleccione',

			'class'=>'form-control'

			)

		

		);?>

		</div>

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

	</div>


	<div class="col-md-3 form-group">

		<?php echo $form->labelEx($model,'idTipoFalla', array('class'=>'control-label')); ?>

		<div>

			<?php 

	

			$listaTipoFalla =array();

			if (isset($model->idtipoFalla)) {

				$idTipoFalla = intval($model->idtipoFalla);

				$listaTipoFalla = CHtml::listData(TipoFalla::model()->findAll("idtipoFalla = '$idTipoFalla'"),'idtipoFalla','nombre');

			}

	

			echo $form->dropDownList($model,"idTipoFalla",$listaTipoFalla,

				array(

				'ajax'=>array(

					'type'=>'POST',

					'url'=>CController::createUrl('DetalleSolicitud/SelectTipo'),

					'update'=>'#'.CHtml::activeId($model,'idfalla'),

					'beforeSend' => 'function(){

						$("#DetalleSolicitud_idfalla").find("option").remove();

					}'

					),

				'prompt'=>'Seleccione Categoria',

				'class'=>'form-control'

				)

			);?>

		</div>

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

	</div>


	<div class="col-md-3 form-group">

		<?php echo $form->labelEx($model,'idfalla', array('class'=>'control-label')); ?>

		<div>

			<?php 

	

			$listaTipo =array();

			if (isset($model->idfalla)) {

				$idfalla = intval($model->idfalla);

				$listaTipo = CHtml::listData(Falla::model()->findAll("idfalla = '$idfalla'"),'idfalla','nombreFalla');

			}

	

			echo $form->dropDownList($model,"idfalla",array(),

				array(

					'prompt'=>'Seleccione Categoria',

					'class'=>'form-control'

					)

			);


			

			?>

		</div>

		


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

	</div>


<?php  $this->endWidget(); ?>




<div class="col-md-3">


<?php

$fecha = date_create();

$rand = date_format($fecha, 'U');

$this->widget('booster.widgets.TbButton', 

                        array(

                            'label'=>'Agregar', 

                            'icon'=>'glyphicon glyphicon-triangle-bottom',

                            'context'=>'success',

                            'size' => 'extra_small',

                            'buttonType'=>'ajaxButton',

                            'url'=>Yii::app()->createUrl("DetalleSolicitud/create"),

                            'ajaxOptions'=>array( 

	                            'type'=>'post',

	                            'dataType'=>'json',

	                            'data'=>'js:$("#detalle-solicitud-form").serialize()',

	                            'success'=>"function(data){

	                            			alert('holasuccess');

	                             		}",

                            ),

                            'htmlOptions'=>array('id'=>'agregarDetalleSolicitud'.$rand,'name'=>'agregarDetalleSolicitud'.$rand)

                    )); ?>  


</div>


</div>


<div class="row tablasModal">


<div class="col-md-12">


<?php


$this->widget('booster.widgets.TbButton', 

                        array(

                            'label'=>'Actualizar', 

                            'icon'=>'glyphicon glyphicon-refresh',

                            'context'=>'info',

                            'size' => 'extra_small',

                            'buttonType'=>'button',

                            'htmlOptions'=>array(

                            	'id'=>'actuallizarDetalleSolicitud',

                            	'name'=>'actuallizarDetalleSolicitud',

                            	'class'=>'pull-right'

                            	)

                    ));

?>

</div>


<div class="col-md-12">

<?php




$this->widget('booster.widgets.TbExtendedGridView', array(

   'id'=>'lecture-grid',

   'dataProvider'=>$model->myDataProvider($idsolicitudGarantia),

    'summaryText'=>false,

    'pagerCssClass'=>'pull-right',

    'pager'=>array(

            'class'=>'CLinkPager',

            'pageSize' => 50,

            'firstPageLabel'=>'Primera',

            'lastPageLabel'=>'Ultima',

            'nextPageLabel'=>'Siguiente',

            'prevPageLabel'=>'Anterior',

            'header'=>false,

        ),

    'columns'=>array(

         array(

			'name' => 'idCategoriaFalla',

			'value' => '$data->idCategoriaFalla0->nombre'

			),

         array(

			'name' => 'idTipoFalla',

			'value' => '$data->idTipoFalla0->nombre'

			),

         array(

			'name' => 'idfalla',

			'value' => '$data->idfalla0->nombreFalla'

			),

         

		

)));


?>

</div>


</div>


</div>

<!-- Popup Footer -->

<div class="modal-footer">


	

	<?php /*$this->widget('booster.widgets.TbButton', array(

		'buttonType'=>'submit',

		'context'=>'success',

        'size' => 'extra_small',

        'icon'=>"glyphicon glyphicon-plus",

		'htmlOptions'=>array('id'=>'crearSolicitudGarantia','name'=>'crearSolicitudGarantia','onclick' => '$("#solicitud-garantia-form").submit()'),

		'label'=>$model->isNewRecord ? 'Crear' : 'Guardar',

	));*/ ?>

	

	<?php $this->widget('booster.widgets.TbButton', array(

	    'context'=>'warning',

        'size' => 'extra_small',

        'icon'=>"glyphicon glyphicon-remove",

	    'label'=>'Cerrar',

	    'url'=>'#',

	    'htmlOptions'=>array('data-dismiss'=>'modal'),

	)); ?>


	<?php ?>

	

</div>



Acontinuacion mi controlador con la funcion create hace la llamada para renderizar el modal:




<?php


class DetalleSolicitudController extends Controller

{

/**

* @var string the default layout for the views. Defaults to '//layouts/column2', meaning

* using two-column layout. See 'protected/views/layouts/column2.php'.

*/

public $layout='//layouts/column2';


/**

* @return array action filters

*/

public function filters()

{

return array(

'accessControl', // perform access control for CRUD operations

);

}


/**

* Specifies the access control rules.

* This method is used by the 'accessControl' filter.

* @return array access control rules

*/

public function accessRules()

{

return array(

array('allow',  // allow all users to perform 'index' and 'view' actions

'actions'=>array('index','view','selectCategoria','selectTipo',),

'users'=>array('*'),

),

array('allow', // allow authenticated user to perform 'create' and 'update' actions

'actions'=>array('create','update'),

'users'=>array('@'),

),

array('allow', // allow admin user to perform 'admin' and 'delete' actions

'actions'=>array('admin','delete'),

'users'=>array('admin'),

),

array('deny',  // deny all users

'users'=>array('*'),

),

);

}


/**

* Displays a particular model.

* @param integer $id the ID of the model to be displayed

*/

public function actionView($id)

{

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

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

));

}


/**

* Creates a new model.

* If creation is successful, the browser will be redirected to the 'view' page.

*/

public function actionCreate()

{


	if(isset($_GET["idsolicitudGarantia"])){

		$idsolicitudGarantia=$_GET['idsolicitudGarantia'];

	}


	if(isset($_POST["idsolicitudGarantia"])){

		$idsolicitudGarantia = $_POST["idsolicitudGarantia"];

	}

	


	$model=new DetalleSolicitud;

	$todosDetalleSolicitud = DetalleSolicitud::model()->findAll("idsolicitudGarantia=$idsolicitudGarantia");

	

	// Uncomment the following line if AJAX validation is needed

	// $this->performAjaxValidation($model);

	

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

	{

		$model->attributes=$_POST['DetalleSolicitud'];

		$model->idsolicitudGarantia = $_POST['idsolicitudGarantia'];


		if($model->save()){

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

			

		}

	}

	

	$this->renderPartial('//DetalleSolicitud/_form',array(

		'model'=>$model,

		'idsolicitudGarantia'=>$idsolicitudGarantia

	),false,true);

}


/**

* Updates a particular model.

* If update is successful, the browser will be redirected to the 'view' page.

* @param integer $id the ID of the model to be updated

*/

public function actionUpdate($id){

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

	

	// Uncomment the following line if AJAX validation is needed

	// $this->performAjaxValidation($model);

	

	if(isset($_POST['DetalleSolicitud'])){

		$model->attributes=$_POST['DetalleSolicitud'];

	if($model->save())

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

	}

	

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

		'model'=>$model,

	));

}


/**

* Deletes a particular model.

* If deletion is successful, the browser will be redirected to the 'admin' page.

* @param integer $id the ID of the model to be deleted

*/

public function actionDelete($id)

{

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

{

// we only allow deletion via POST request

$this->loadModel($id)->delete();


// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser

if(!isset($_GET['ajax']))

$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));

}

else

throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

}


/**

* Lists all models.

*/

public function actionIndex()

{

$dataProvider=new CActiveDataProvider('DetalleSolicitud');

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

'dataProvider'=>$dataProvider,

));

}


/**

* Manages all models.

*/

public function actionAdmin()

{

$model=new DetalleSolicitud('search');

$model->unsetAttributes();  // clear any default values

if(isset($_GET['DetalleSolicitud']))

$model->attributes=$_GET['DetalleSolicitud'];


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

'model'=>$model,

));

}


/**

* Returns the data model based on the primary key given in the GET variable.

* If the data model is not found, an HTTP exception will be raised.

* @param integer the ID of the model to be loaded

*/

public function loadModel($id)

{

$model=DetalleSolicitud::model()->findByPk($id);

if($model===null)

throw new CHttpException(404,'The requested page does not exist.');

return $model;

}


/**

* Performs the AJAX validation.

* @param CModel the model to be validated

*/

protected function performAjaxValidation($model)

{

if(isset($_POST['ajax']) && $_POST['ajax']==='detalle-solicitud-form')

{

echo CActiveForm::validate($model);

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

}

}


	public function actionSelectCategoria(){

		print_r($_POST);

		$idCategoria = $_POST['DetalleSolicitud']	['idCategoriaFalla'];

		$lista=TipoFalla::model()->findAll('idCategoriaFalla = :idCategoria',array(':idCategoria'=>$idCategoria));

		$lista = $listaTiposFallas = CHtml::listData($lista,'idtipoFalla','nombre');


		echo CHtml::tag('option',array('value'=>''),'Seleccione',true);


		foreach ($lista as $valor => $descripcion) {

			echo CHtml::tag('option',array('value'=>$valor),CHtml::encode($descripcion),true);

		}

	}


	public function actionSelectTipo(){


		$idTipo = $_POST['DetalleSolicitud']['idTipoFalla'];

		$lista=Falla::model()->findAll('idTipoFalla = :idTipo',array(':idTipo'=>$idTipo));

		$lista = $listaTiposFallas = CHtml::listData($lista,'idfalla','nombreFalla');


		echo CHtml::tag('option',array('value'=>''),'Seleccione',true);


		foreach ($lista as $valor => $descripcion) {

			echo CHtml::tag('option',array('value'=>$valor),CHtml::encode($descripcion),true);

		}

	}


	protected function obtenerOpcionesFallas(){

		$listaTiposFallas = CHtml::listData(Falla::model()->findAll(),'idfalla','nombreFalla');

		return $listaTiposFallas;

	}


	protected function obtenerOpcionesTiposFallas(){

		$listaTiposFallas = CHtml::listData(TipoFalla::model()->findAll(),'idtipoFalla','nombre');

		return $listaTiposFallas;

	}


	protected function obtenerOpcionesCategoriasFallas(){

		$listaCategoriasFallas = CHtml::listData(CategoriaFalla::model()->findAll(),'idcategoriaFalla','nombre');

		return $listaCategoriasFallas;

	}


}




Y por ultimo desde donde lo llamo con el boton "Agregar Falla" y el modal se encuentra en la parte inferior




<?php

$this->breadcrumbs=array(

	'Solicitud Garantias'=>array('index'),

	'Manage',

);


Yii::app()->clientScript->registerScript('search', "

$('.search-button').click(function(){

        $('.search-form').toggle();

        return false;

});

// add the script to toggle the field list

$('.fields-button').click(function(){

        $('.fields-form').toggle();

        return false;

});

$('.search-form form').submit(function(){

        $('#application-grid').yiiGridView('update', {

                data: $(this).serialize()

        });

        return false;

});

");

?>


<h2>Lista de Solicitudes de Garantias</h2>


<?php $this->widget(

    'booster.widgets.TbButton',

    array(

        'buttonType' => 'ajaxButton',

        'label' => 'Mostrar mas campos',

        'icon'=>'glyphicon sti-action-class',

        'size' => 'extra_small',

        'context' => 'primary',

        'url'=>Yii::app()->createUrl("SolicitudGarantia/MostrarCampos"),

        'ajaxOptions'=>array(

                    'type'=>'POST',

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

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

                        $("#viewModal .modal-content").html(data); 

                        $(".modal-dialog").removeClass("modal-lg");

                        $(".modal-dialog").addClass("modal-sm");

                        $("#viewModal").modal();  

                    }'

                ),

                        

    ));

    ?>




<?php

// here we create an array of columns for the grid view

$modelColumns=$model->getMetaData()->columns;

foreach ($modelColumns AS $columnName => $columnData) {

    if (in_array($columnName,$columns)) {

        $key=array_search($columnName,$columns);


        switch ($columnName) {

            case 'idcliente':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idcliente0->idPersona0->nombre .\" \". \$data->idcliente0->idPersona0->apellidoPaterno .\" \". \$data->idcliente0->idPersona0->apellidoMaterno");

                break;

            case 'idvendedor':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idvendedor0->idPersonaU->nombre .\" \". \$data->idvendedor0->idPersonaU->apellidoPaterno .\" \". \$data->idvendedor0->idPersonaU->apellidoMaterno");

                break;

            case 'idecoma':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idecoma0->nombre");

                break;

            case 'idetapa':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idetapa0->anio .\"-\". \$data->idetapa0->no_etapa");

                break;

            case 'idfraccionamiento':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idfraccionamiento0->anio .\"-\". \$data->idfraccionamiento0->nombre");

                break;

            case 'medioReporte':

                $columns[$key]=array('name'=>$columnName,'value'=>"SolicitudGarantia::getSwitchMetodoReporte(\$data->medioReporte)",'filter'=>array(''=>'Todos','1'=>SolicitudGarantia::getSwitchMetodoReporte(1),'2'=>SolicitudGarantia::getSwitchMetodoReporte(2),'3'=>SolicitudGarantia::getSwitchMetodoReporte(3)),);

                break;

            case 'estadoSolicitud':

                $columns[$key]=array('name'=>$columnName,'value'=>"SolicitudGarantia::getSwitchEstadoSolicitud(\$data->estadoSolicitud)",'filter'=>array(''=>'Todos','1'=>SolicitudGarantia::getSwitchEstadoSolicitud(1),'2'=>SolicitudGarantia::getSwitchEstadoSolicitud(2),'3'=>SolicitudGarantia::getSwitchEstadoSolicitud(3),'4'=>SolicitudGarantia::getSwitchEstadoSolicitud(4),'5'=>SolicitudGarantia::getSwitchEstadoSolicitud(5),'6'=>SolicitudGarantia::getSwitchEstadoSolicitud(6),'7'=>SolicitudGarantia::getSwitchEstadoSolicitud(7)));

                break;

            case 'idSolicitante':

                $columns[$key]=array('name'=>$columnName,'value'=>"\$data->idSolicitante0->idPersonaS->nombre .\" \". \$data->idSolicitante0->idPersonaS->apellidoPaterno .\" \". \$data->idSolicitante0->idPersonaS->apellidoMaterno");

                break;

        }





    }

}


$_SESSION['SolicitudGarantia']['columnas'] = $columns;


// add the button column

// set the button column header to be a drop down to select page size

// don't forget to change 'casa-entregada-grid' to reflect your grid 'id'

$columns[]=array(

            'class'=>'booster.widgets.TbButtonColumn',

            'template'=>'{delete}{view}{update}{contactoSol}{trabajoTerm}{imprimir}{confirmar}{DetalleSolicitar}', // botones a mostrar

            'updateButtonUrl'=>'Yii::app()->createUrl("/SolicitudGarantia/update?id=$data->idSolicitudGarantia" )', // url de la acción 'update'

            'deleteButtonUrl'=>'Yii::app()->createUrl("/SolicitudGarantia/delete?id=$data->idSolicitudGarantia" )', // url de la acción 'delete'

            'deleteConfirmation'=>'Seguro que quiere eliminar el elemento?', // mensaje de confirmación de borrado

            'afterDelete'=>'$.fn.yiiGridView.update("solicitud-garantia-grid");', // actualiza el grid después de borrar

            'buttons'=>array(

                'DetalleSolicitar' => array( //botón para la acción nueva

                    'label'=>'Agregar Fallas', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon mdi-content-add',

                    'url'=>'Yii::app()->createUrl("DetalleSolicitud/create",array("idsolicitudGarantia"=>"$data->idSolicitudGarantia"))', //url de la acción nueva

                    'visible'=>'($data->estadoSolicitud==1)',

                    'options'=>array(

                            'ajax'=>array(

                                'type'=>'POST',

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

                                'success'=>'function(data) { 


                                    $("#viewModal .modal-content").html(data);

                                    $(".modal-dialog").removeClass("modal-sm");

                                    $(".modal-dialog").addClass("modal-lg");

                                    $("#viewModal").modal(); 

                                }'

                            ),

                        ),

                ),

                'delete' => array( //botón para la acción nueva

                    'label'=>'Eliminar', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon mdi-action-delete',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/delete",array("id"=>$data->idSolicitudGarantia))', //url de la acción nueva

                ),

                /*'view' => array( //botón para la acción nueva

                    'label'=>'Detalles', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon mdi-action-visibility',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/view?id=$data->idSolicitudGarantia" )', //url de la acción nueva

                ),*/

                'view' => array( //botón para la acción nueva

                    'label'=>'Detalles', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon mdi-action-visibility',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/view",array("id"=>$data->idSolicitudGarantia))', //url de la acción nueva

                    'options'=>array(

                            'ajax'=>array(

                                'type'=>'POST',

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

                                'success'=>'function(data) { $("#viewModal .modal-body p").html(data); $("#viewModal").modal(); }'

                            ),

                        ),

                ),

                'update' => array( //botón para la acción nueva

                    'label'=>'Actualizar', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon mdi-content-create',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/update",array("id"=>$data->idSolicitudGarantia))', //url de la acción nueva

                    /*'htmlOptions' => array(

                        'class' => 'fa fa-desktop',

                    ),*/

                ),

                'contactoSol' => array( //botón para la acción nueva

                    'label'=>'Solicitante Contactado', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon glyphicon-user',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/updateEstado",array("id"=>$data->idSolicitudGarantia,"estado"=>2))', //url de la acción nueva

                    'visible'=>'($data->estadoSolicitud==1)',

                ),

                'trabajoTerm' => array( //botón para la acción nueva

                    'label'=>'Trabajo Finalizado', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon glyphicon-home',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/updateEstado",array("id"=>$data->idSolicitudGarantia,"estado"=>3))', //url de la acción nueva

                    'visible'=>'($data->estadoSolicitud==2)',

                ),

                'imprimir' => array( //botón para la acción nueva

                    'label'=>'Imprimir Formato', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon glyphicon-print',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/updateEstado",array("id"=>$data->idSolicitudGarantia,"estado"=>4))', //url de la acción nueva

                    'visible'=>'($data->estadoSolicitud==3)',

                ),

                'confirmar' => array( //botón para la acción nueva

                    'label'=>'Confirmar Firma', // titulo del enlace del botón nuevo

                    'icon'=>'glyphicon glyphicon-ok',

                    'url'=>'Yii::app()->createUrl("/SolicitudGarantia/updateEstado",array("id"=>$data->idSolicitudGarantia,"estado"=>5))', //url de la acción nueva

                    'visible'=>'($data->estadoSolicitud==4)',

                ),

            ),

            'header'=>CHtml::dropDownList('pageSize',$pageSize,array(10=>10,20=>20,50=>50,100=>100),array('onchange'=>"$.fn.yiiGridView.update('solicitud-garantia-grid',{ data:{pageSize: $(this).val() }})")),

        );

        /*array(

            'class'=>'CButtonColumn',

            'template'=>'{view}{update}{delete}',

            'header'=>CHtml::dropDownList('pageSize',$pageSize,array(10=>10,20=>20,50=>50,100=>100),array('onchange'=>"$.fn.yiiGridView.update('casa-entregada-grid',{ data:{pageSize: $(this).val() }})")),

);*/

$this->widget(

    'booster.widgets.TbButtonGroup',

    array(

        'id' => 'exportar',

        'size' => 'extra_small',

        'context' => 'primary', 

        'buttons' => array(

            array(

                'label' => 'Exportar',

                'htmlOptions'=>array(

                    'id' => 'btnExportarSolicitudGarantia',

                    'class' => 'exportarTabla'

                ),

                'items' => array(

                    array(

                        'label' => 'Documento XLSX',

                        'url' => Yii::app()->createUrl("/SolicitudGarantia/exportarExcel" ),

                        'icon' => 'fa fa-file-excel-o',

                        ),

                    array(

                        'label' => 'Documento PDF', 

                        'url' => Yii::app()->createUrl("/SolicitudGarantia/exportarPDF" ),

                        'icon' => 'fa fa-file-pdf-o',

                        ),

                )

            ),

        ),

    )

);


// display the gridview

$this->widget('booster.widgets.TbExtendedGridView', array(

        'id'=>'solicitud-garantia-grid',

        'type'=>'condensed',

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

        'summaryCssClass'=>'pull-right',

        'beforeAjaxUpdate' => 'function(id) { $(\'#loadingbar\').show(); }',

        'afterAjaxUpdate' => 'function(id) { $(\'#loadingbar\').hide(); }',

        'filter'=>$model,

        'pager'=>array(

            'class'=>'CLinkPager',

            'pageSize' => 50,

            'firstPageLabel'=>'Primera',

            'lastPageLabel'=>'Ultima',

            'nextPageLabel'=>'Siguiente',

            'prevPageLabel'=>'Anterior',

            'header'=>'Ir',

        ),

        'summaryText' => 'Visualizando {start}-{end} de {count} resultados. ',

        'columns'=>$columns,

)); ?>


<!-- View Popup  -->

<?php $this->beginWidget('booster.widgets.TbModal', array('id'=>'viewModal','modalDialogOptions'=>array('class'=>'modal-lg'))); ?>


<?php $this->endWidget(); ?>

<!-- View Popup ends -->



De antemano muchas gracias por la ayuda.

Buenas.

Para la alta (create) no estás indicando que se actualice.Deberías codificarlo en el success del botón:




$this->widget('booster.widgets.TbButton', 

                        array(

                            'label'=>'Agregar', 

                            'icon'=>'glyphicon glyphicon-triangle-bottom',

                            'context'=>'success',

                            'size' => 'extra_small',

                            'buttonType'=>'ajaxButton',

                            'url'=>Yii::app()->createUrl("DetalleSolicitud/create"),

                            'ajaxOptions'=>array( 

                                    'type'=>'post',

                                    'dataType'=>'json',

                                    'data'=>'js:$("#detalle-solicitud-form").serialize()',

                                    'success'=>"function(data){

                                                 alert('holasuccess');

                                                 $.fn.yiiGridView.update('lecture-grid');" // AÑADIR ESTA LÍNEA

                                                }",

                            ),



Ni compruebas el resultado de la acción AJAX para revisar si hubo error o no.

Y el botón actualizar qué hace? sólo refresca el listview? No te hace falta. Pero bueno, yo haría lo siguiente en caso de que lo quieras tener:





$this->widget('booster.widgets.TbButton', 

                        array(

                            'label'=>'Actualizar', 

                            'icon'=>'glyphicon glyphicon-refresh',

                            'context'=>'info',

                            'size' => 'extra_small',

                            'buttonType'=>'button',

                            'htmlOptions'=>array(

                                'id'=>'actuallizarDetalleSolicitud',

                                'name'=>'actuallizarDetalleSolicitud',

                                'class'=>'pull-right',

                                'onclick' => '$.fn.yiiGridView.update("lecture-grid");'  // AÑADIR ESTA LÍNEA

                                )

                    ));




Supongo que el problema de que no te funcione el botón actualizar es que no te está registrando correctamente el script.

Un saludo.