2017-08-31 11 views
0

、私のアプリケーションでは、私は、ユーザーのために、私はExt JS 6.2、日付をSQL形式に変換する方法:2017-08-25 16:34?私は内線のJS v6.2のグリッドを使用してい

format: 'd/m/Y H:i' 

として日付フォーマットを示すが、SQLにデータを提出するには、私はSQLとして変換する必要があり、DateTimeField型をしましたフォーマットは、

format: 2017-08-25 16:34 

ここに私のコードはだ、私は2016-03-14T18:30:00.000Zとして出力を取得しています。しかし、私はformat: 2017-08-25 16:34としてそれを必要とします。

私が間違っている場合は、私のコードを訂正してください。私はドキュメントやその他の役立つものを探しました。

var headerObj = page.getForm().getFieldValues(); 
var hdrData = "<HeaderData>" + x2js.json2xml_str(headerObj)" +</HeaderData>"; 
console.log(hdrData); 
{ 
    xtype: 'datefield', 
    border: true, 
    width: '100%', 
    fieldLabel: 'somefield', 
    name: 'somefield', 
    format: 'd/m/Y H:i', 
    submitFormat: 'Y-m-d H:i', 
} 
+0

これは、コンポーネントの定義です。送信コードを表示します。 – Alexander

+0

@Alexanderは私のコードを更新しました.jsonとしてfieldvalueを取得していますので、xmlをSQLに渡すことができるようにxmlに変換しています。 –

答えて

0

ExtJSのは、それを行うための機能を与えるものではありません。

Date.prototype.toNormalizedDate = function(){ 
    var normalizedDate = new Date(Date.UTC(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())); 
    return normalizedDate.toISOString(); 
} 
0

getFieldValues方法は、モデルデータを返す:あなたはあなたの日付を変換するカスタム関数を作成する必要があります。モデルデータは、通常はjavascriptの日付で動作するストアモデルで使用するため、この関数はdatefieldsからjavascriptの日付を返します。シリアライゼーションの間だけ、javascriptの日付はブラウザのデフォルトを使用して文字列に変換されます(シリアライゼーション関数は入力が文字列のみであることを既に想定しているためです)。

あなたが試してみたいと思われるものはform.getSubmitDataです。この関数は、すべてのフィールドの文字列値を返します。日付フィールドの場合、日付はsubmitFormatを使用してフォーマットされます。

第2の可能性は、フォームではなく提出のためにモデルを使用することです。

操作をセーブ/ロードするためにプロキシを使用してモデルを定義します。

Ext.define('MyModel',{ 
    extend: 'Ext.data.Model', 
    fields:[{ 
     name: 'somefield', 
     type: 'date', 
     dateFormat: 'Y-m-d H:i' 
    }], 
    proxy: { 
     url: '...' 
    } 
}) 

その後、新しいレコードを作成し、フォームに入れ、次のいずれか

form.loadRecord(Ext.create('MyModel')) 

またはサーバーから既存のレコードを編集:

MyModel.load(id, { 
    success: function(record) { 
     form.loadRecord(record); 
    } 
}) 

さらにサーバーに保存してください。

form.updateRecord(); 
form.getRecord().save({ 
    success: function() { 
     Ext.alert('Saved!'); 
    } 
}); 

これには、元のXMLリーダーとExtJSのライターをモデルプロキシに追加することができ、独自のXML変換機能を使用することができます。

0

ExtJs docsフォームには、getValuesを使用してフォームのすべての値を取得するメソッドがあります。あなたは参照することができますExtJs docs

私は小さなデモを作成して、どのように動作しているかを示しています。

Sencha fiddle

Ext.create('Ext.form.Panel', { 
    renderTo: Ext.getBody(), 
    width: 300, 
    bodyPadding: 10, 
    title: 'Date', 
    margin: 10, 
    items: [{ 
     xtype: 'datefield', 
     anchor: '100%', 
     fieldLabel: 'From', 
     format: 'd/m/Y H:i', 
     submitFormat: 'Y-m-d H:i', 
     allowBlank: false, 
     name: 'date' 
    }, { 
     xtype: 'button', 
     text: 'Submit Date', 
     formBind: true, 
     handler: function() { 
      var date = this.up('form').getValues().date; 
      /* this is also one way to get value by date field. 
       date =this.up('form').down('datefield').getValue(), 
       submittedDate = Ext.Date.format(date,'Y-m-d H:i'); 
      */ 
      Ext.Msg.alert('Success', `Selected date is <b>${date}</b>`); 
     } 
    }] 
}); 
関連する問題