Php CListView寻呼机无法与Yii中的自定义CSqlDataProvider一起使用

Php CListView寻呼机无法与Yii中的自定义CSqlDataProvider一起使用,php,ajax,yii,Php,Ajax,Yii,我正试图使用CListView以Yii格式编写一份报告。在我看来,表单上有两个日期选择器,用于设置报表的数据范围。一旦我提交表单,它会正确返回第一条记录,但在我点击页面后,它会呈现我的主页而不是下一条记录 我想问题是我只在表单提交时在controller中定义了数据提供程序,但我不知道每次调用pager时如何传递数据提供程序。我试图修改控制器中的if条件,以检查页面是否已发布,但它也不起作用。我需要使用Ajax吗?重要的是,如果可能的话,我希望两个日期选择器都出现在所有页面的表格顶部 有人能帮我

我正试图使用CListView以Yii格式编写一份报告。在我看来,表单上有两个日期选择器,用于设置报表的数据范围。一旦我提交表单,它会正确返回第一条记录,但在我点击页面后,它会呈现我的主页而不是下一条记录

我想问题是我只在表单提交时在controller中定义了数据提供程序,但我不知道每次调用pager时如何传递数据提供程序。我试图修改控制器中的if条件,以检查页面是否已发布,但它也不起作用。我需要使用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',));
        }
?>

分页使用GET方法工作,因此此ifisset$_POST['Kivetes']将为false,您应该对表单使用GET方法

if(isset($_GET['Kivetes']))
     {


很抱歉我反应太晚了。你指的是我的Kivetes模型,不是页码。我照顾过他,看来我的问题没有一个简单的解决办法。看来我需要自己写传呼机了。我在Yii社区论坛上找到了这个:。
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id'=>'kivetes-form',
    'enableAjaxValidation'=>false,
    'method'=>'get'
)); ?>