最近在写了一个Ext的程序,就是在Ext的Grid中显示数据,点击一条后,弹出窗口,然后加载数据
具体有两种作法
一、使用Form的load方法
二、使用Ajax请求,得到数据后,赋值给弹出的窗口的Form里
一、弹出窗口后
editWin.form.getForm().load({
url : "../ljzcAction?methodName=query",
params : {
id : _crr.get("id")
},
//waitMsg : '正在载入数据...',
success : function(form,_action){
//alert(editWin.findById("id").value);
myMask.hide();
},
failure : function(form,_action) {
myMask.hide();
Ext.Msg.alert("系统消息", "数据载入出错");
}
});
Form里面需要加入解析JSON数据的reader:
reader:new Ext.data.JsonReader(
{
root:'results'
},
[{name: 'id',mapping:'id'},
{name: 'ljlx',mapping:'ljlx'},
{name: 'ljmc',mapping:'ljmc'},
{name: 'sjklx',mapping:'sjklx'},
{name: 'sjkbbh',mapping:'sjkbbh'},
{name: 'fwm',mapping:'fwm'},
{name: 'url',mapping:'url'},
{name: 'dk',mapping:'dk'},
{name: 'yhm',mapping:'yhm'},
{name: 'mm',mapping:'mm'}
]),
items : [{
fieldLabel : "id",
name : "id",
id : "id",
hideLabel : true,
hidden : true
}, {
fieldLabel : "ljlx",
name : "ljlx",
id : "ljlx",
hideLabel : true,
hidden : true,
value : '数据库型'
}]
二、弹出窗口后,直接请求数据
var editWin = new EditLJZC_SJKWindow();
editWin.show();
var myMask = new Ext.LoadMask(Ext.get('editWin'), {msg:"Please wait..."});
myMask.show();
Ext.Ajax.request({
url : "../ljzcAction?methodName=query",
params : {
id : _crr.get("id")
},
success : function(_action) {
var _obj = Ext.decode(_action.responseText);
var _ljzc = _obj.results[0];
var ljmc = _ljzc["ljmc"];
var sjklx = _ljzc["sjklx"];
var sjkbbh = _ljzc["sjkbbh"];
var fwm = _ljzc["fwm"];
var url = _ljzc["url"];
var dk = _ljzc["dk"];
var yhm = _ljzc["yhm"];
var mm = _ljzc["mm"];
var myForm = editWin.form.getForm();
Ext.getCmp("id").setValue( _crr.get("id")) ;
myForm.findField("ljlx").setValue(_crr.get("ljlx"));
myForm.findField("ljmc").setValue(ljmc);
myForm.findField("sjklx").setValue( sjklx);
myForm.findField("sjkbbh").setValue( sjkbbh);
editWin.findById("fwm").setValue(fwm);
editWin.findById("url").setValue(url);
editWin.findById("dk").setValue(dk);
//editWin.findById("yhm").value = yhm;
editWin.findById("yhm").setValue(yhm);
Ext.getCmp("mm").setValue(mm) ; //起作用
alert(editWin.findById("id").value);
editWin.show();
myMask.hide();
},
failure : function(_action) {
var _obj = Ext.decode(_action.responseText);
Ext.Msg.alert("系统消息", _obj["message"]);
myMask.hide();
}
});
这里,我最开始出现了一个问题,就是直接赋值 editWin.findById("yhm").value = yhm,结果窗口老是没有变化,
只有调用系统的方法才管用