Ext form加载数据

最近在写了一个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,结果窗口老是没有变化,

只有调用系统的方法才管用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值