php-yii:日期过滤器在过滤后不起作用

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

我试图将日期选择器放入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),    
                ),
            ),
        )); ?>

解决方法:

更新了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();
}
");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐