当前位置:  开发笔记 > 编程语言 > 正文

Ext JS:FormPanel没有用JSON数据填充字段

如何解决《ExtJS:FormPanel没有用JSON数据填充字段》经验,为你挑选了1个好方法。

我有一个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}]}

我没有错误,加载后表单字段肯定是空的.我该如何解决这个问题,或者开始调试呢?



1> wes..:

如果查看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.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有