我正在尝试使用CListView在Yii中整理报告。在我看来,我在表单上有两个日期选择器来设置报告的数据范围。一旦我提交表单,它就会正确返回第一条记录,但在我点击寻呼机后,它会呈现我的主页而不是下一条记录。
我想问题是我只在表单提交时在控制器中定义我的数据提供程序,但我无法弄清楚每次调用pager时如何通过我的数据提供程序。我尝试修改控制器中的if
条件以检查是否已发布page
,但它也不起作用。我需要使用Ajax吗?重要的是,如果可能的话,我希望两个日期选择器都出现在所有页面的表格顶部。
有人可以帮帮我吗?
我的控制器:
public function actionView()
{
$model=new Kivetes;
$egyedi_etel_idk = array();
$sqlProvider = array();
if(isset($_POST['Kivetes']))
{
$model->attributes=$_POST['Kivetes'];
$count = Yii::app()->db->createCommand("SELECT COUNT(osszerendeles.etel_id)
FROM `ff_etlap` etlap
INNER JOIN `ff_etlap_osszerendeles` osszerendeles ON etlap.id = osszerendeles.etlap_id
WHERE etlap.datum >= '".$model->datum_tol."' AND etlap.datum <= '".$model->datum_ig."'
GROUP BY osszerendeles.etel_id")->queryScalar();
$sql_egyedi_etel_idk = "SELECT osszerendeles.etel_id as 'etel_id'
FROM `ff_etlap` etlap
CS INNER JOIN `ff_etlap_osszerendeles` osszerendeles ON etlap.id = osszerendeles.etlap_id
WHERE etlap.datum >= '".$model->datum_tol."' AND etlap.datum <= '".$model->datum_ig."'
GROUP BY osszerendeles.etel_id";
$sqlProvider = new CSqlDataProvider($sql_egyedi_etel_idk, array(
'keyField' => 'etel_id',
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=>'1',
),
));
}
$this->render('view',array('model'=>$model,
'dataProvider'=>$sqlProvider));
}
}
我的观点:
<?php setlocale(LC_ALL, "hu_HU.UTF-8"); ?>
<div class="form">
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'kivetes-form',
'enableAjaxValidation'=>false,
)); ?>
<?php
$today = date('Y-m-d');
$day_number = date('N', strtotime($today));
$first_day = $day_number - 1;
$last_day = 7- $day_number;
?>
<fieldset>
<?php echo $form->labelEx($model,'datum_tol'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'datepicker_tol',
'language'=>'hu',
'model'=>$model,
'attribute'=>'datum_tol',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'dateFormat'=>'yy/mm/dd',
'showWeek' => 'true',
'minDate' => -$first_day,
'maxDate' => $last_day,
),
));
?>
<?php echo $form->labelEx($model,'datum_ig'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'datepicker_ig',
'language'=>'hu',
'model'=>$model,
'attribute'=>'datum_ig',
// additional javascript options for the date picker plugin
'options'=>array(
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'dateFormat'=>'yy/mm/dd',
'showWeek' => 'true',
'minDate' => -$first_day,
'maxDate' => $last_day,
),
));
?>
</br>
<?php $this->widget('bootstrap.widgets.TbButton', array(
'type'=>'primary',
'label'=>'Listázás',
'url'=>'',
'htmlOptions'=>array('onclick' => '$("#kivetes-form").submit()'),
)); ?>
</fieldset>
<?php $this->endWidget(); ?>
</div><!-- form -->
<?php
if (!empty($model->datum_tol))
{
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_kivetes',));
}
?>
答案 0 :(得分:0)
分页使用GET方法,因此if(isset($_POST['Kivetes']))
将为false,您应该为表单使用GET方法。
if(isset($_GET['Kivetes']))
{
和
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'kivetes-form',
'enableAjaxValidation'=>false,
'method'=>'get'
)); ?>