EditorGridPanel關於時間格式[GTM格式]的初始,編輯

    在EXT中經常會遇到時間格式的初始化,編輯,保存的情況,其中時間格式也有精確度不同。下面介紹一下工作中遇到的一點問題及解決方法:[用到的控件爲DateTimeField,爲一個擴展控件,可以去網上下,也可以在我的資源裏找,可以精確到秒]

   如下圖,是一個簡單的EditorGridPanel,裏面最後一列需要初始化一個時間格式的字段。

 

  按平時正常的寫法應該如下:

 

或者是這樣:

 

這樣的寫法感覺應該沒錯,在ColunmModel裏初始數據信息,時間格式的信息也會在renderer被格式化,但實際上顯示的結果卻並並不是時間格式的,而是“NaN-NaN-NaN”,這是爲什麼呢。原因如下:

   讓我們來看看Ext.format.dateRenderer的源代碼:

   //////////////////////////////////////////////////////////////
     dateRenderer : function(format) {   
      return function(v) {   
        return Ext.util.Format.date(v, format);、   
       }  
    } 

  ////////////////////////////////////////////////////////////

我們從後臺傳來的值[字符串又被格式化了一次],因爲傳來的值已經是字符串格式,不是時間格式的,所有會出現此問題。

修改:如果只是單純的顯示的話,只需要把第二種方法中的Jsonreader中的字段的類型 type:'date' 修改成 type:'string'這樣就可以了,可以正確的時間格式了。

////////////////////////////////////////////////

但這是一個EditorGridPanel,還需要對時間進行編輯。選擇了時間編輯器以後,如下圖:

 選擇完成之後,會顯示如下格式的時間字段:Fri Aug 28 09:37:46 GMT + 0008[GMT時間格式],這是因爲在renderer的對時間進行格式化時候出現了問題,因爲從後臺的時候不需要格,從時間編輯器裏傳值的時候需要格,有一個矛盾的過程,其實修改一下renderer屬性即可:

  renderer:function(value){  
                    if(value instanceof Date){  
                        return new Date(value).format("Y-m-d H:i:s");  
                    }else{  
                        return value;  
                    } 
                }

對傳的值進行一下判斷!~~然後確定需要不需要格。

備註:不知道爲什麼,顯示時間格式是正確,往後臺傳值保存的時候,卻又是GMT時間格式的,需要在後臺對那個GMT時間格式的字符串進行一個判斷格式爲正確的時間格式(y:M:d hh:mi:ss):

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章