请看下列代码,我想为其formpanel中的表单加载数据,我才用ext.ajax.request从后台读取数据,数据读到了,我却不知道怎么样为表单赋值。有哪位高手能够帮帮忙呀!在线等候呀!
Ext.define('S3.Console.Envirrecord', {
    constructor: function (dept_id, dept_desc, sensor_id, sensor_desc) {
        var refrigerator_type = "";
        var Model = "";
        var refrigerator_brand = "";
        var Energy_dissipation = "";
        var Volume = "";
        var refrigerator_life = "";
        var repairnum = "";
        var s = "";        Ext.Ajax.request({
            url: 'core/WebService.asmx/LoadEnvirrecord',
            method: 'POST',
            jsonData: { dept_id: dept_id, sensor_id: sensor_id },
            success: function (response) {
                var data = Ext.JSON.decode(response.responseText).d;
                var store = new Ext.data.Store({
                    model: 'envirrecordmodel',
                    proxy: {
                        type: 'memory',
                        reader: {
                            type: 'json'
                        }
                    }
                });
                //store.load(data);
                Model = store.Model;
            }
        });
        var Panel = new Ext.form.FormPanel({
            defaults: {
                xtype: 'textfield',
                allowBlank: false
            },
            items: [{
                name: 'sensor_desc',
                fieldLabel: '探头名称',
                value: sensor_desc            }, {
                name: 'dept_desc',
                fieldLabel: '部门名称',
                value: dept_desc            }, {
                name: 'refrigerator_type',
                fieldLabel: '冰箱类型',
                value: refrigerator_type
            }, {
                name: 'Model',
                fieldLabel: '型号',
                value: Model
            }, {
                name: 'refrigerator_brand',
                fieldLabel: '冰箱名称',
                value: refrigerator_brand
            }, {
                name: 'Energy_dissipation',
                fieldLabel: '耗能',
                value: Energy_dissipation
            }, {                name: 'Volume',
                fieldLabel: '容积',
                value: Volume
            }, {
                name: 'refrigerator_life',
                fieldLabel: '使用年限',
                value: refrigerator_life
            }, {                name: 'repairnum',
                fieldLabel: '维修次数',
                value: repairnum
            }, {                name: 's',
                fieldLabel: '备注',
                value: s
            }
        ]
        });        var win = Ext.create('Ext.Window', {
            title: '仓储环境' + ' 部门:' + dept_desc + '(' + dept_id + ') 探头:' + sensor_desc + '(' + sensor_id + ')',
            layout: 'fit',
            modal: true,
            width: 500,
            height: 400,
            autoScroll: false,
            items: Panel
        });
        win.show();    }
});

解决方案 »

  1.   

    后台读到了数据 到前台也转化成了json
    根据json取值 将相应的值赋值到相应的组件中就行啊
    Ext.getCmp('组件id').setValue('值')
      

  2.   

    实际上你的代码应该这样来写
    Ext.define('S3.Console.Envirrecord', {
    constructor : function(dept_id, dept_desc, sensor_id, sensor_desc)
    {
    var refrigerator_type = "";
    var Model = "";
    var refrigerator_brand = "";
    var Energy_dissipation = "";
    var Volume = "";
    var refrigerator_life = "";
    var repairnum = "";
    var s = "";
    /*begin:这里定义组件*/
    var Panel = new Ext.form.FormPanel({
    defaults : {
    xtype : 'textfield',
    allowBlank : false
    },
    items : [{
    name : 'sensor_desc',
    fieldLabel : '探头名称',
    value : sensor_desc }, {
    name : 'dept_desc',
    fieldLabel : '部门名称',
    value : dept_desc }, {
    name : 'refrigerator_type',
    fieldLabel : '冰箱类型',
    value : refrigerator_type
    }, {
    name : 'Model',
    fieldLabel : '型号',
    value : Model }, {
    name : 'refrigerator_brand',
    fieldLabel : '冰箱名称',
    value : refrigerator_brand
    }, {
    name : 'Energy_dissipation',
    fieldLabel : '耗能',
    value : Energy_dissipation
    }, { name : 'Volume',
    fieldLabel : '容积',
    value : Volume
    }, {
    name : 'refrigerator_life',
    fieldLabel : '使用年限',
    value : refrigerator_life
    }, { name : 'repairnum',
    fieldLabel : '维修次数',
    value : repairnum
    }, { name : 's',
    fieldLabel : '备注',
    value : s
    }]
    }); var win = Ext.create('Ext.Window', {
    title : '仓储环境' + ' 部门:' + dept_desc + '(' + dept_id + ') 探头:'
    + sensor_desc + '(' + sensor_id + ')',
    layout : 'fit',
    modal : true,
    width : 500,
    height : 400,
    autoScroll : false,
    items : Panel
    });
    win.show();
    /*end:这里定义组件*/
    Ext.Ajax.request({
    url : 'core/WebService.asmx/LoadEnvirrecord',
    method : 'POST',
    jsonData : {
    dept_id : dept_id,
    sensor_id : sensor_id
    },
    success : function(response)
    {
    var data = Ext.JSON.decode(response.responseText).d;
    var store = new Ext.data.Store({
    model : 'envirrecordmodel',
    proxy : {
    type : 'memory',
    reader : {
    type : 'json'
    }
    }
    });
    // store.load(data);
    Model = store.Model;
    // ***************************************/
    // 这里给上边的组件赋值
    } }); }
    });
      

  3.   

    还有就是出了Ext.Ajax.request({})从后台获取的数据不久无效了吗,那刚才的Ext.getCmp('组件id').setValue('值')要放在哪儿呢?
      

  4.   

    假如你后台传回来的是"{name:'我是名称','s':'我是备注'}"
    success : function(response)
                {
                    var data = Ext.JSON.decode(response.responseText).d;
                    var json = Ext.JSON.decode(response.responseText);//这样就把后台的字符串在前台转成了json格式 {name:'我是名称','s':'我是备注'}
                    var store = new Ext.data.Store({
                        model : 'envirrecordmodel',
                        proxy : {
                            type : 'memory',
                            reader : {
                                type : 'json'
                            }
                        }
                    });
                    // store.load(data);
                    Model = store.Model;
                    // ***************************************/
                    // 这里给上边的组件赋值 要给每一个组件加上id
                      Ext.getCmp('备注组件的id').setValue(json.s);//给备注组件赋值
                       //.....下边的组件道理和这个备注组件的一样
                }
      

  5.   

    建议你看看 表单的load方法
      

  6.   

    我知道是哪儿出现的错误,    
    Ext.getCmp('备注组件的id').setValue(json.s);
    如果是直接给Ext.getCmp('s').setValue(“ddd”);这样就会有值了,如果按照刚才你给我的方法就没有数据显示。
      

  7.   

     public IList LoadEnvirrecord(int sensor_id, string dept_id)
            {
                this.InitEntityInstance();
                         var refrigerator = context.refrigerator.FirstOrDefault(r=>r.dept_id==dept_id&&r.sensor_id==sensor_id);
              
              
                    var envir = context.refrigerator.Where(r=>r.sensor_id==sensor_id&&r.dept_id==dept_id).Select(r => new { r.refrigerator_brand, r.refrigerator_type, r.Volume, refrigerator.repairnum, r.refrigerator_life, r.Model,r.Energy_dissipation, r.s}).ToList();            
                    
               this.TearDownEntityInstance();
               return envir; 
                
            }
    这里边有返回的数据呀!
      

  8.   

    不是看你后台的代码
    假如你后台向前台打印的是"aaaaa" 我就要看"aaaaa"  你打印下数据 把这个数据给我看下 我主要关心的是数据格式 
      

  9.   

    {"d"[{"refrigerator_brand":"gh","refrigerator_type":"hg","Volume":"gh","repairnum":54,"refrigerator_life":12,"Model":"h","Energy_dissipation":"hjh","s":"bb"}]}
      

  10.   

    {"d"[{"refrigerator_brand":"gh","refrigerator_type":"hg","Volume":"gh","repairnum":54,"refrigerator_life":12,"Model":"h","Energy_dissipation":"hjh","s":"bb"}]}你的格式不对后台返回的字符串 格式要如下:
    {"refrigerator_brand" : "gh","refrigerator_type" : "hg", "Volume" : "gh","repairnum" : 54,"refrigerator_life" : 12,"Model" : "h","Energy_dissipation" : "hjh","s" : "bb"}
    success : function(response)
                {
                    var json = eval("(" + response.responseText + ")");
                    var store = new Ext.data.Store({
                        model : 'envirrecordmodel',
                        proxy : {
                            type : 'memory',
                            reader : {
                                type : 'json'
                            }
                        }
                    });
                    // store.load(data);
                    Model = store.Model;
                    // ***************************************/
                    // 这里给上边的组件赋值 要给每一个组件加上id
                      Ext.getCmp('备注组件的id').setValue(json.s);//给备注组件赋值
                       //.....下边的组件道理和这个备注组件的一样
                }
    这样应该就可以了 试下吧
      

  11.   

    怎么可能?格式对了不应该有问题
    现在是什么问题? ajax回调中走进去了没 后台数据格式对了没 该发的发下我看看 
    alert(response.responseText)是什么?
     
      

  12.   

    如果返回值是:{"refrigerator_brand" : "gh","refrigerator_type" : "hg", "Volume" : "gh","repairnum" : 54,"refrigerator_life" : 12,"Model" : "h","Energy_dissipation" : "hjh","s" : "bb"}var rb = Ext.decode(response.responseText).refrigerator_brand;
    alert(rb);
    就会弹出  gh  
      

  13.   

    对啊 就是这样
    Ext.decode(response.responseText) 将字符串转为json对象 {"refrigerator_brand" : "gh","refrigerator_type" : "hg", "Volume" : "gh","repairnum" : 54,"refrigerator_life" : 12,"Model" : "h","Energy_dissipation" : "hjh","s" : "bb"}json对象的特点 就是由键值对组成 
    举个简单的例子你就明白了 
    var a = {"name":"我是name","age":"我是年龄"};
    var myName = a.name;//myName值就是 "我是name" 
    就这样来取
      

  14.   

    我一直是数据格式的错误,在我这里面数据格式的错误是不是因为我jsonData原因呀!
      

  15.   


    我一直都是数据格式的错误,出现数据格式的错误是不因为jsondata呢?
      

  16.   


    {"d"[{"refrigerator_brand":"gh","refrigerator_type":"hg","Volume":"gh","repairnum":54,
    "refrigerator_life":12,"Model":"h","Energy_dissipation":"hjh","s":"bb"}]}格式是这样的话...
    貌似你没定义root啊
    将reader: {
      type: 'json'
    }改成reader: {
      type: 'json'
      root: 'd'
    }试一试..
    前台先取单个数据alert看看
      

  17.   


    还是没有数据显示,取单据的时候显示undefine.
      

  18.   

    store.getCount()输出一下这个值看看是多少
      

  19.   


    Ext.getCmp('refrigerator_type').setValue(json.refrigerator_type);似乎是json.refrigerator_type是没有取到值的,
      

  20.   

    你返回的数据格式里没有success :true前台:
    if(success == true){
    ...
    }
    表示返回数据中success为true时才执行的完整的数据格式应该是这样的吧:{"d":[{"refrigerator_brand":"gh","refrigerator_type":"hg","Volume":"gh","repairnum":54,
    "refrigerator_life":12,"Model":"h","Energy_dissipation":"hjh","s":"bb"}], "success":true}
      

  21.   

    不..上面的时store.load()的时候Ext.Ajax.request({
    url: '',
            ...
    success:function(r,o){
    var res = Ext.decode(r.responseText);
    if (res&&res.success){
       // 返回成功时执行的代码块
    }
        },
        failure:Ext.emptyFn // 失败时什么都不做
    },this);
      

  22.   


    看我35L的数据格式,注意最后的 "success":true
      

  23.   

    var data = Ext.JSON.decode(response.responseText).d;
    Panel.getForm().setValues(data);
      

  24.   

    这个问题,用Ext.form.load()方法怎么实现?