日期:2014-05-17  浏览次数:20642 次

Extjs form 表单数据读取后显示失败,reader,model
问题如题


ext代码如下:
JScript code

<script type="text/javascript">
Ext.require([
    'Ext.form.*',
    'Ext.data.*'
]);
Ext.onReady(function(){
            var app = new bb.SouthCenter();
    });

    
Ext.define('bb.SouthCenter',{
    extend: 'Ext.form.Panel',
    initComponent: function(){
//         
        Ext.define('bb.formItem',{//在 gridform中使用
            extend: 'Ext.data.Model',
            fields : [
                {name:'SiteID',mapping:'SiteID'}
                ,{name:'SiteName',mapping:'SiteName'}
            ]
        });
        
        Ext.apply(this,{
        renderTo: 'form-ct',
        frame: true,
        title:'XML Form',
        width: 340,
        bodyPadding: 5,
        waitMsgTarget: true,
        fieldDefaults: {
            labelAlign: 'right',
            labelWidth: 85,
            msgTarget: 'side'
        },
        reader : this.creatReader(),
        items: [{
                    xtype:'textfield',
                    fieldLabel: 'SiteID',
                    name: 'SiteID'
                }, {
                    xtype:'textfield',
                    fieldLabel: 'SiteName',
                    name: 'SiteName'
                }],

        buttons: [{
            text: 'Load',
            listeners:{
                        scope: this,//范围
                        click:this.loadurl
                    }
            }]
        });
        this.callParent(arguments);
    },
    loadurl:function(){
        this.getForm().load({
            url: '/database/item.txt',
            waitMsg: 'Loading...'
        });
    },
    creatReader:function(){
        this.Reader=Ext.create('Ext.data.reader.Array', {
            model:'bb.formItem',
            record : 'items',
            implicitIncludes:true
       });
       return this.Reader;
    }
    
});
</script>



json信息如下:
JScript code

{items:{
    SiteID:'ID1',
    SiteName:'marshalmackes',
    }
}



可以加载json数据,但是无法显示到表单里。
而且如果不用define封装form.Panel 而直接用var formpanel=Ext.create();的形式数据显示没问题。


------解决方案--------------------
只想说两点:1,json中的根结点名与grid中的root一定要一致的。2,像这种初始化的,一般可先得到grid中的值,在对应window中做初始化赋值。
------解决方案--------------------
向楼主学习!自己的自己来回答,好跟大家分享。把json中的items改成data,ext中的record 也相对应改一下就ok了
估计是ext对于form panel就是只能用这个的。