2013-05-16 61 views
1

像在主題中一樣。我在其中一個過濾器中有CGridView和Yii的datepicker。我有一個格式設置爲yy-mm-dd但我把值和GridView使用ajax來調整數據 - 格式更改爲:dd.mm.yy。這裏是我的代碼:在gridview過濾器中的Yii datepicker在ajax請求後改變格式

array(
     'name' => 'confirmStart', 
     'filter' => $this->widget('zii.widgets.jui.CJuiDatePicker', 
      array(
       'model' => $model, 
       'attribute' => 'confirmStart', 
       'language' => 'pl', 
       'i18nScriptFile' => 'jquery.ui.datepicker-ja.js', 
       'htmlOptions' => array(
        'id' => 'Projects_confirmStart', 
        'dateFormat' => 'yy-mm-dd', 
       ), 
       'defaultOptions' => array( // (#3) 
      'showOn' => 'focus', 
      'dateFormat' => 'yy-mm-dd', 
      'showOtherMonths' => true, 
      'selectOtherMonths' => true, 
      'changeMonth' => true, 
      'changeYear' => true, 
      'showButtonPanel' => true, 
    ) 
      ), 
      true), 
    ), 
+0

檢查如果你的模型將其轉換爲這種格式。在$'model-> search()''後面的''model''的''confirmStart''字段的值之後,在請求後的過濾字段中看到的是什麼。 – Johnatan

+0

我不認爲我的模型能做到。數據庫格式是相同的,我沒有在模型中的任何轉換代碼。 – Joe

回答

3

不知道這是否會解決你的問題,但是我用的CGridView一個datepicker時有一些問題。爲了解決這個問題,我需要重新安裝日期選擇器:

在你CGridView:

'afterAjaxUpdate' => 'reinstallDatePicker', 

及以下CGRID視圖中添加以下sript:

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

如果仍然沒有解決您的問題,您可以嘗試:

Yii::app()->clientScript->registerScript('re-install-date-picker', " 
    function reinstallDatePicker(id, data) { 
     $('#Projects_confirmStart').datepicker({ dateFormat: 'yy-mm-dd' }); 
    } 
"); 

或(不知道你應該使用一個)

Yii::app()->clientScript->registerScript('re-install-date-picker', " 
    function reinstallDatePicker(id, data) { 
     $('#Projects_confirmStart').datepicker('option', 'dateFormat', 'yy-mm-dd'); 
    } 
"); 

編輯:

放回日期,你可以嘗試使用JavaScript來設置日期:

Yii::app()->clientScript->registerScript('re-install-date-picker', " 
    function reinstallDatePicker(id, data) { 
     $('#Projects_confirmStart').datepicker('option', 'dateFormat', 'yy-mm-dd'); 
     var start = $('#Projects_confirmStart').val(); 
     $('#Projects_confirmStart').datepicker('setDate', start); 
    } 
"); 

我真的不知道它會工作

+0

嘿!我正在使用'({dateFormat:'yy-mm-dd'})'但它不起作用。我使用了答案中的最後一個代碼,它現在可以工作。我的意思是 - 格式不會改變。它會導致一個問題 - 在ajax更新日期後從字段中消失。因爲我有3個日期選擇器會更好,如果它停留在那裏;)任何想法也許? – Joe

+0

我更新了我的答案,但我不確定它會起作用。請讓我知道! – darkheir

+0

不是。美元符號不能在javascript中工作,但這種想法很好。如果我用實際日期替換'$ model-> confirmStart',它會將數據放在文本區域內。我只需要弄清楚如何得到日期。無論如何,我會接受你的答案,因爲我的基本問題是由你回答的。謝謝! – Joe