我有一个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' }] });
这是我加载数据的方式:
goalPanel.getForm().load({url:'goal/getAnnualSalesGoal', method:'GET',params:myParams} );
这是JSON响应,如Firebug中所示:
{"items":[{"referenceSales":700000,"salesGoal":749000,"increasePercentage":0.07}]}
我没有错误,加载后表单字段肯定是空的.我该如何解决这个问题,或者开始调试呢?
如果查看Ext.form.BasicForm的文档,它会说JSON支持内置于BasicForm中,因此您不需要使用JsonReader将数据加载到表单中.这应该不会伤害.
我认为主要问题可能是对BasicForm的加载调用需要这样的JSON响应:
{ "success": true, "data": { "referenceSales": 700000, "salesGoal": 749000, "increasePercentage": 0.07 } }
但你的是一个阵列.
(来自Ext.form.BasicForm.load文档)
另外,如果您使用的是Ext 3.0,hbox
布局要比处理起来容易得多columns
.