Yii Framework Forum: Problema En La Paginación Cgridview - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problema En La Paginación Cgridview Problema en la paginación CGridView Rate Topic: -----

#1 User is offline   periko 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 12-March 13

Posted 12 March 2013 - 10:25 AM

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); 
        }

0

#2 User is offline   periko 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 12-March 13

Posted 14 March 2013 - 12:34 PM

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

#3 User is offline   rgmf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 12-August 12

Posted 14 March 2013 - 01:29 PM

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'])) {
...
}

0

#4 User is offline   periko 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 12-March 13

Posted 14 March 2013 - 01:34 PM

View Postrgmf, on 14 March 2013 - 01:29 PM, said:

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.
0

#5 User is offline   periko 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 12-March 13

Posted 17 March 2013 - 03:10 AM

¿Nadie sabe a que se puede deber?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users