我有一个FormPanel有3个字段和一个JsonReader.这是设置:
var goalPanel = new Ext.FormPanel({
reader: new Ext.data.JsonReader({
idProperty: 'id',
root: 'items',
fields: [
{name: 'referenceSales', type:'float'},
{name: 'increasePercentage', type: 'float'},
{name: 'salesGoal', type: 'float'}
]
}),
labelAlign: 'top',
frame:true,
bodyStyle:'padding:5px 5px 0',
items: [{
layout:'column',
items:[{
columnWidth:.33,
layout: 'form',
items: [{
fieldLabel: 'Reference Sales',
xtype: 'numberfield',
name: 'referenceSales',
readOnly: true,
disabled: true,
anchor:'95%'
}]
},{
columnWidth:.33,
layout: 'form',
items: [{
fieldLabel: 'Increase %',
name: 'increasePercentage',
xtype: 'numberfield',
anchor:'95%',
decimalPrecision: 2,
}
}]},{
columnWidth:.34,
layout: 'form',
items: [{
fieldLabel: 'Sales Goal',
name: 'salesGoal',
xtype: 'numberfield',
anchor:'95%',
decimalPrecision: '2',
}]
}]
}],
buttons: [{
text: 'Recalculate'
}]
});
Run Code Online (Sandbox Code Playgroud)
这是我加载数据的方式:
goalPanel.getForm().load({url:'goal/getAnnualSalesGoal', method:'GET',params:myParams} );
Run Code Online (Sandbox Code Playgroud)
这是JSON响应,如Firebug中所示:
{"items":[{"referenceSales":700000,"salesGoal":749000,"increasePercentage":0.07}]}
Run Code Online (Sandbox Code Playgroud)
我没有错误,加载后表单字段肯定是空的.我该如何解决这个问题,或者开始调试呢?
如果查看Ext.form.BasicForm的文档,它会说JSON支持内置于BasicForm中,因此您不需要使用JsonReader将数据加载到表单中.这应该不会伤害.
我认为主要问题可能是对BasicForm的加载调用需要这样的JSON响应:
{
"success": true,
"data": {
"referenceSales": 700000,
"salesGoal": 749000,
"increasePercentage": 0.07
}
}
Run Code Online (Sandbox Code Playgroud)
但你的是一个阵列.
另外,如果您使用的是Ext 3.0,hbox布局要比处理起来容易得多columns.