3

问题:过滤器的日期选择器在过滤后不起作用。

我试图将日期选择器放入 cgridview 的过滤器中。这是成功的。但是当过滤后日期选择器不工作时。所有的 cgridview 都有同样的问题。我怎么解决这个问题?

过滤前:过滤过滤前 后:过滤后

这个 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),    
                ),
            ),
        )); ?>
4

1 回答 1

4

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

在 CGridView 初始化选项中添加添加 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();
}
");
于 2012-11-18T15:45:38.990 回答