Ext JS 6.2,如何将日期转换为sql格式:2017-08-25 16:34?
我使用Ext JS的V6.2电网,在我的应用程序,我已经DateTimeField字段,对于用户I显示日期格式Ext JS 6.2,如何将日期转换为sql格式:2017-08-25 16:34?
format: 'd/m/Y H:i'
但在提交数据到SQL,我需要为SQL转换格式,
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',
}
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();
}
的getFieldValues
方法返回模型数据。模型数据旨在与商店模型一起使用,该模型通常可以与javascript日期一起使用,因此该函数会从datefields返回javascript日期。只有在序列化期间,JavaScript日期才会被转换为一个字符串,使用浏览器默认值(因为序列化函数已经期望输入仅为字符串)。
你可能想要尝试的是form.getSubmitData
。该函数将返回所有字段的字符串值;在日期字段的情况下,日期然后使用submitFormat
进行格式化。
第二种可能性是使用提交模型,而不是表单。
定义模型与负载的代理/保存操作:
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!');
}
});
这具有整洁的副作用,您可以将ExtJS的原始XML读取器和写入器添加到模型代理中,并且可以取消自己的XML转换功能。
在ExtJs文档窗体中有方法可以使用getValues来获取表单的所有值。你可以参考ExtJs docs
我已经创建了一个小演示来展示你,它是如何工作的。
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>`);
}
}]
});
这只是组件定义。显示你的提交代码。 – Alexander
@Alexander更新了我的代码,我将fieldvalue作为json并将它们转换为xml,以便我可以将xml传递给sql。 –