问题:过滤后,过滤器上的datepicker无效。
我试图将datepicker放入cgridview的过滤器中。这是成功的。但是当过滤后,datepicker不起作用。所有的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),
),
),
)); ?>
答案 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();
}
");