请看下列代码,我想为其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(); }
});
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(); }
});
根据json取值 将相应的值赋值到相应的组件中就行啊
Ext.getCmp('组件id').setValue('值')
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;
// ***************************************/
// 这里给上边的组件赋值
} }); }
});
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);//给备注组件赋值
//.....下边的组件道理和这个备注组件的一样
}
Ext.getCmp('备注组件的id').setValue(json.s);
如果是直接给Ext.getCmp('s').setValue(“ddd”);这样就会有值了,如果按照刚才你给我的方法就没有数据显示。
{
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;
}
这里边有返回的数据呀!
假如你后台向前台打印的是"aaaaa" 我就要看"aaaaa" 你打印下数据 把这个数据给我看下 我主要关心的是数据格式
{"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);//给备注组件赋值
//.....下边的组件道理和这个备注组件的一样
}
这样应该就可以了 试下吧
现在是什么问题? ajax回调中走进去了没 后台数据格式对了没 该发的发下我看看
alert(response.responseText)是什么?
alert(rb);
就会弹出 gh
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"
就这样来取
我一直都是数据格式的错误,出现数据格式的错误是不因为jsondata呢?
{"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看看
还是没有数据显示,取单据的时候显示undefine.
Ext.getCmp('refrigerator_type').setValue(json.refrigerator_type);似乎是json.refrigerator_type是没有取到值的,
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}
url: '',
...
success:function(r,o){
var res = Ext.decode(r.responseText);
if (res&&res.success){
// 返回成功时执行的代码块
}
},
failure:Ext.emptyFn // 失败时什么都不做
},this);
看我35L的数据格式,注意最后的 "success":true
Panel.getForm().setValues(data);