2012-11-18 149 views
2

問題之後不工作。YII:在過濾器日期選擇器過濾後不工作:與日期過濾器過濾

我試圖把日期選擇爲cgridview的過濾器。這是成功。但是當日期選擇器在過濾後不工作時。所有的cgridview都有同樣的問題。我怎麼解決這個問題?

過濾器之前:before filter 過濾後:after filter

這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),  
       ), 
      ), 
     )); ?> 

回答

3

您需要cgridview更新後重新初始化日期選擇器。閱讀:http://www.yiiframework.com/wiki/318/using-cjuidatepicker-for-cgridview-filter/

加入CGridView初始化選項

'dataProvider'=>$model->search($id), 
'filter'=>$model, 
'afterAjaxUpdate' => 'reinstallDatePicker', // (#1) 

添加afterAjaxUpdate定義此功能:

// (#5) 
Yii::app()->clientScript->registerScript('re-install-date-picker', " 
function reinstallDatePicker(id, data) { 
    $('#History_created_date').datepicker(); 
} 
");