Hello,
I’m newbie on Yii.
On view, I’ve created three tab with CJuiTabs, in one of wich I call a controller action (data), If the form hasn’t been sent, I load it through renderpartial in the view. If the form has been sent I generate the data in order to load them in a CGridView (aslo through renderpartial).
The view where the CGridView is load the form correctly. The problem is when I click on any of the pagination links because the data isn’t load on CGridView anymore. Instead of this, there are shown on the form directly. How can I solve this problem?
I paste here the code in order to show my problem clearer.
Thank you.
CJuiTabs view:
<?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,
),
));
?>
Form view:
<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>
View of where CJuiTabs is:
<div id="zonas-grid">
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'zonas-grid',
'dataProvider'=>$dataProvider,
//'filter'=>$model,
'columns'=>array(
'HLectura',
),
));
?>
</div>
Controller action
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);
}