Problema En La Paginación Cgridview

Buenas,

Soy algo novato en Yii.

Bien, dentro de la vista view he creado tres solapas con CJuiTabs, en las cuales en una de ellas llamo a una acción del controlador (datos), en la cual cargo un formulario en AJAX con renderpartial si no se ha enviado el formulario o bien proceso el formulario y genero los datos para cargarlos en un CGridView (esto también lo hago a través de renderpartial). La vista donde esta el CGridView carga correctamente el formulario, el problema es al hacer click en algún enlace de la paginación que esta ya no carga los datos en el CGrdiView sino que se muestra directamente el formulario. ¿Cómo podría solucionarlo?. Pego el código para que quede más claro todo lo que he puesto aquí, gracias a todos de antemano.

Vista del CJuiTabs




<?php

/* @var $this ZonasController */

/* @var $model Zonas */

$this->breadcrumbs=array(

	'Zonases'=>array('index'),

	$model->id,

);

?>

<?php


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

    'id'=>'zonas_tab',

    'tabs'=>array(

   

        Yii::t('default', 'Mapa')=>array('ajax'=>Yii::app()->createUrl('zonas/mapa', array('id'=>$model->id))),

        Yii::t('default', 'Datos')=>array('ajax'=>Yii::app()->createUrl('zonas/datos', array('id'=>$model->id))),

        Yii::t('default', 'Gráficas')=>$this->renderPartial("_viewGraficas", array('model' => $model), $this),

    ),

    // additional javascript options for the tabs plugin

    'options'=>array(

        'collapsible'=>true,

    ),

));


?>



Vista del formulario





<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'datos-search',

	'enableAjaxValidation'=>true,

        'clientOptions'=>array(

            'validateOnSubmit'=>true, 

            'validateOnChange'=>true,

        )    

));?>

    <div id="formResult"></div>

	<p class="note">Fields with <span class="required">*</span> are required.</p>

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

	<div class="row">

		<?php echo $form->labelEx($model2,Yii::t('default', 'FInicio')); ?>

                <?php 

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

                        //'language'=>'es',

                        'model'=>$model2,

                        'attribute'=>'FInicio',

                        'options'=>array('dateFormat'=> 'yy-mm-dd'),

                        //'htmlOptions'=>array('readonly'=>true),

                    ));

                ?>

		<?php echo $form->error($model2,'FInicio');?>

	</div>

        <div class="row">

		<?php echo $form->labelEx($model2,Yii::t('default', 'FFin')); ?>

                <?php 

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

                        //'language'=>'es',

                        'model'=>$model2,

                        'attribute'=>'FFin',

                        'options'=>array('dateFormat'=> 'yy-mm-dd'),

                        //'htmlOptions'=>array('readonly'=>false),

                    ));

                ?>

		<?php echo $form->error($model2,'FFin'); ?>

	</div>    

        <div class="row">

		<?php echo $form->labelEx($model2,'EnSal'); ?>

                <?php echo $form->dropDownList($model2,'EnSal', CHtml::listData(Ensal::model()->findAll("id_zona=$model->id"), 'id', 'nombre')); ?>

		<?php echo $form->error($model2,'EnSal'); ?>

	</div>

	<div class="row buttons">

		<?php

               echo CHtml::ajaxSubmitButton('submit',

                        Yii::app()->createUrl('/zonas/datos',array('id'=>$model->id)),

                        array(

                            'type'=>'POST', 

                            'update'=>'#content-formImeter',

                            'success'=>"function(data) {

                                            if (data.indexOf('{')==0) {

                                                var e = jQuery.parseJSON(data);

                                                jQuery('.errorSummary').empty();

                                                var list = jQuery('.errorSummary').append('<ul></ul>').find('ul');

                                                jQuery.each(e, function(key, value) {

                                                    jQuery('#'+key+'_em_').show().html(value.toString());

                                                    jQuery('#'+key).addClass('clsError');

                                                    jQuery('label[for='+key+']').addClass('clsError');

                                                    list.append('<li>'+value.toString()+'</li>');

                                                });

                                                jQuery('.errorSummary').show();

                                            }

                                            else {

                                                jQuery('.errorMessage').hide();

                                                jQuery('.errorSummary').hide();

                                                jQuery('#content-formImeter').empty();

                                                jQuery('#content-formImeter').append(data);

                                            }

                                        }"

                            ));?>

	</div>


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


</div><!-- form -->


<div id="content-formImeter"></div>






Vista donde se encuentra el CGridView




<div id="zonas-grid">

<?php 

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

	'id'=>'zonas-grid',

	'dataProvider'=>$dataProvider,

	//'filter'=>$model,

	'columns'=>array(

		'HLectura',

	),

)); 

?>

</div>




Acción del controlador:




 public function actionDatos($id)

	{ 

            $model = new FBuscarDatosImts();

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

            if (Yii::app()->getRequest()->getIsAjaxRequest()) {

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

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

                    if ($model->validate()) {

                        // Todos los registros de una fecha en concreto

                        if (empty($_POST['FBuscarDatosImts']['FFin'])) {

                          

                              $dataProvider=new CActiveDataProvider('Datos', array(

                                    'criteria'=>array(

                                    'join'=>"INNER JOIN imeters ON (t.id_imeter = imeters.id)",

                                    'condition'=>"imeters.id_ensal = ". $_POST['FBuscarDatosImts']['EnSal']." AND t.fecha = " .$_POST['FBuscarDatosImts']['FInicio'])));

                              $this->renderPartial('_tabDatos',array('dataProvider'=>$dataProvider,'model'=>$model2), false, true);

                        }          

                        else {

                            echo "nada";

                        }

                    }

                    else { 

                        $error = CActiveForm::validate($model);

                        if ($error != '[]') {

                            echo $error;

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

                        }

                    }

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

                }

            }

            $this->renderPartial('/zonas/_FBuscarDatosImts',array('model'=>$model2,'model2'=>$model),false,true); 

        }



No consigo solucionarlo, a ver si alguien me puede ayudar. Gracias!!

Hola,

a ver si te he entendido bien: cuando pulsas uno de los botones de paginación te aparece el formulario vacío, ¿no? Por tanto, será debido a que el modelo llega a la vista vacío, sin datos. ¿Has comprobado que a la acción del controlador llega el POST y que entra aquí?:




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

...

}



No, tu rellenas el formulario y este se procesa de forma correcta, cuando se procesa se carga con renderpartial una vista que contiene un CGridView, este CGridView funciona bien (es decir muestra los datos) hasta el momento que pulsas en uno de los enlaces de la paginación del CGridView. Una vez le das por ejemplo a la página 2 muestra solo el formulario de bsuqueda de la solapa. No se si ahora me explicado un poquito mejor jeje.

¿Nadie sabe a que se puede deber?