Yii фильтрация в CGridView при помощи CJuiDatePicker
основную идею вынес отсюда
1.первоначальный вид столбца меняем с
на
2.дописываем
где
3.в модели изменяем правило поиска на
Это ключевой момент
Стандартное $criteria->compare будет искать как LIKE а нам нужно
WHERE f_timestamp::date = '2015-05-28'
4.после чего можем еще добавить кнопку на очистку фильтра
или даже так
или так
1.первоначальный вид столбца меняем с
array(
'name' => 'f_timestamp',
'type' => 'raw',
'value' => '($data->f_timestamp)',
'headerHtmlOptions' => array('style' => 'text-align:center'),
),
на
array(
'name' => 'f_timestamp',
'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'f_timestamp',
'language' => 'ru',
'options' => array(
'showAnim' => 'fold',
'dateFormat' => 'yy-mm-dd',
'changeMonth' => 'true',
'changeYear' => 'true',
'showButtonPanel' => 'true',
),
), true),
),
2.дописываем
$this->widget('bootstrap.widgets.TbGridView', array(
'id' => 'level-view-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'afterAjaxUpdate' => "function() {
jQuery('#LevelView_f_timestamp').datepicker(jQuery.extend(jQuery.datepicker.regional['ru'],{'showAnim':'fold','dateFormat':'yy-mm-dd','changeMonth':'true','showButtonPanel':'true','changeYear':'true'}));
}",
где
LevelView_f_timestamp
id фильтра (узнать можно при помощи firebug)3.в модели изменяем правило поиска на
if ($this->f_timestamp) $criteria->addCondition ("f_timestamp::date = '$this->f_timestamp'" );
Это ключевой момент
Стандартное $criteria->compare будет искать как LIKE а нам нужно
WHERE f_timestamp::date = '2015-05-28'
4.после чего можем еще добавить кнопку на очистку фильтра
$this->widget('bootstrap.widgets.TbButton', array(
'buttonType' => 'button',
'label' => 'сбросить время',
'htmlOptions' => array('onclick' => "document.getElementById('LevelView_f_timestamp').value=null;location.reload(); "),
));
или даже так
array(
'class' => 'bootstrap.widgets.TbButtonColumn',
'header' => CHtml::link('сбросить время', '', array(
'onclick'=>"document.getElementById('LevelView_f_timestamp').value=null;location.reload();",
)
) ,
или так
array(
'class' => 'bootstrap.widgets.TbButtonColumn',
'header' => CHtml::image(Yii::app()->baseUrl . '/images/icons/mydel.png', '', array(
'onclick'=>"document.getElementById('LevelView_f_timestamp').value=null;location.reload();",
)
) ,
Комментарии
Отправить комментарий