Filter Yii CGridview筛选器日期选择器

Filter Yii CGridview筛选器日期选择器,filter,yii,cgridview,Filter,Yii,Cgridview,我已经读过关于定制cgridview的论坛。。我想让过滤器使用datetimepicker 日期时间选择器: 我已经可以包含datetimepicker,但是当我选择日期时,它变成了错误:(.. 数据库上我的日期数据类型为“timestamp” 这是密码 <?php $this->breadcrumbs=array( 'Events'=>array('index'), 'Manage', ); $this->menu=array( array

我已经读过关于定制cgridview的论坛。。我想让过滤器使用datetimepicker

日期时间选择器:

我已经可以包含datetimepicker,但是当我选择日期时,它变成了错误:(.. 数据库上我的日期数据类型为“timestamp”

这是密码

<?php
$this->breadcrumbs=array(
    'Events'=>array('index'),
    'Manage',
);

$this->menu=array(
    array('label'=>'List Event','url'=>array('index')),
    array('label'=>'Create Event','url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
    $('.search-form').toggle();
    return false;
});
$('.search-form form').submit(function(){
    $.fn.yiiGridView.update('event-grid', {
        data: $(this).serialize()
    });
    return false;
});
");
?>

<h1>Manage Events</h1>

<p>
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b>
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done.
</p>

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button btn')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
    'model'=>$model,
)); ?>
</div><!-- search-form -->

<?php $this->widget('bootstrap.widgets.TbGridView',array(
    'id'=>'event-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'afterAjaxUpdate'=>"function(){jQuery('#event_date_search').datepicker({'dateFormat': 'yy-mm-dd'})}",
    'columns'=>array(
        array(
            'type' => 'raw',
            'name'=> 'event_image',
            'value' => 'CHtml::image("'.Yii::app()->request->baseUrl.'/uploads/event/$data->event_image", "event_image" ,array("width"=>100))',
            'filter'=> false,
        ),
        'event_name',
        array(
            'name' => 'event_date',
            'type' => 'raw',
            'filter'=>$this->widget('zii.widgets.jui.CJuiDatepicker', array(
                'model'=>$model,
                'attribute'=>'event_date',
                'htmlOptions' => array(
                    'id' => 'event_date_search'
                ), 
                'options' => array(
                    'dateFormat' => 'yy-mm-dd'
                )
            ), true)
        ),
        array(
            'name'=>'published',
            'filter'=>CHtml::dropDownList('Event[published]', '',  
                array(
                    ''=>'',
                    '1'=>'Published',
                    '0'=>'Not Published',
                )
            ),
            'value' =>'($data->published==1)?"Published":"Not Published"',
        ),
        array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
        ),
    ),
)); 

?>
您可以更改模型类的search()函数。它可以是这样的:

public function search() {
     ....
     $criteria->addCondition('DATE_FORMAT(time_field, \'%Y-%m-%d\') = ' . $this->time_field);
     ....
}

但是它可能需要转换$this->time\u字段的输入值。

我昨天遇到了完全相同的问题,不知什么原因,我移动了

'dateFormat'=>'yy-mm-dd'

从选项到选项修复了我的问题。老实说,我在选项和选项中都有,到目前为止没有任何问题

'htmlOptions' => array(
                    'id' => 'event_date_search',
                    'dateFormat' => 'yy-mm-dd'
                     ), 

 'options' => array(
                    'dateFormat' => 'yy-mm-dd'
                   ),

希望这有帮助

您能替换代码吗

'options' => array(
   'dateFormat' => 'yy-mm-dd'
)

希望这有帮助

有关详细信息,请查看此链接

'defaultOptions' => array(
   'showOn' => 'focus', 
   'dateFormat' => 'yy-mm-dd',
   'showOtherMonths' => true,
   'selectOtherMonths' => true,
   'changeMonth' => true,
   'changeYear' => true,
   'showButtonPanel' => true,
)