yii:过滤后,日期过滤器无效

时间:2012-11-18 15:31:26

标签: php yii

问题:过滤后,过滤器上的datepicker无效。

我试图将datepicker放入cgridview的过滤器中。这是成功的。但是当过滤后,datepicker不起作用。所有的cgridview都有同样的问题。我该如何解决这个问题?

过滤前的

before filter 过滤后:after filter

这个cgridview

<?php $this->widget('zii.widgets.grid.CGridView', array(
            'id'=>'history-grid',
            'dataProvider'=>$model->search($id),
            'filter'=>$model,
            'columns'=>array(
                array(
                    'name'=>'user_id',
                    'value'=>'$data->profiles->firstname',
                ),
                'action',
                array(
                    'name'=>'status',
                    'value'=>'$data->status',
                    'filter' => $status_list,
                ),
                array(
                    'name'=>'created_date',
                    'value'=>'date("d-M-Y h:m a",strtotime($data->created_date))',
                    'filter'=>$this->widget('zii.widgets.jui.CJuiDatePicker', array(
                        'name'=>'History[created_date]',        
                        'model'=>$model,
                        'value' =>date('d-M-Y', strtotime($model->created_date)) ,
                        'i18nScriptFile' => 'jquery.ui.datepicker-eng.js', // (#2)
                        'htmlOptions' => array(
                            'id' => 'History_created_date',
                            'size' => '10',
                        ),
                        'defaultOptions' => array(  // (#3)
                            'showOn' => 'focus', 
                            'dateFormat' => 'dd-M-yy',
                            'showOtherMonths' => true,
                            'selectOtherMonths' => true,
                            'changeMonth' => true,
                            'changeYear' => true,
                            'showButtonPanel' => true,
                            //'yearRange'=>'-1:+1', 
                            'yearRange'=> '2012:+1',
                            'minDate'=>'js:new Date(' . date('2012,m-3,1') . ')', 
                            //'defaultDate'=>'js:new Date(' . date('2012,m-11,1') . ')', 
                        )
                    ),true),    
                ),
            ),
        )); ?>

1 个答案:

答案 0 :(得分:4)

更新cgridview后需要重新初始化datepicker。阅读:http://www.yiiframework.com/wiki/318/using-cjuidatepicker-for-cgridview-filter/

在CGridView init选项中添加afterAjaxUpdate

'dataProvider'=>$model->search($id),
'filter'=>$model,
'afterAjaxUpdate' => 'reinstallDatePicker', // (#1)

并定义此功能:

// (#5)
Yii::app()->clientScript->registerScript('re-install-date-picker', "
function reinstallDatePicker(id, data) {
    $('#History_created_date').datepicker();
}
");