form 中的元素用数组,然后用后台传来的 json 给 元素 setValue()
var arr1= new Array()arr1['id']=new =new Ext.form.TextField ({name:'id', fieldLabel: 'id',value:0})
arr1['name']=new Ext.form.TextField ({name:'name', fieldLabel: '姓名 Name',value:""})
arr1['email']=new Ext.form.TextField ({name:'email', fieldLabel: '电邮地址 Email',value:""})
var formset= new Ext.FormPanel({
frame:true,
trackResetOnLoad : false,
defaults:{labelAlign:'right',labelWidth:60, frame:true,layout:'form'},
fields_arr: arr1 ,
items: [this.fields_arr['id'],
this.fields_arr['name'],
this.fields_arr['email']
],
refrefield:function(config){
for (var key in config){
if (this.fields_arr[key]!==undefined){
this.fields_arr[key].setValue(config[key])
}
}
},
})
Ext.Ajax.request( {
url : 'user_save.action',
method : 'post',
success : function(response, options) {
var o = Ext.util.JSON.decode(response.responseText)
formset.refrefield(0) //这里给字段赋值
},
failure : function() {
}
})
}
extJs只是一个前台JS控件,是无法直接从数据库取出数据的,必须由JSP,PHP,ASP等网络编程语言从数据库取出数据再填充如EXTJS里,EXTJS只是客户端语言
是无法与后台通信的,
你根本就没熟悉SSH+extjs的流程,我跟你说下流程,喝了酒,可能说的不太清:1、首先提交时可以同时提交的,使用
form.submit({
params:{‘gridData’ : xxx}
})
其中form.submit函数本身就会把form提交上去,然后param配置项里的xxx就应该是你想要传的grid
当然 有前提条件,首先在form中每个textfield组件定义name为“对象名.属性名”的方式,如你提交的是用户信息,那么对象名可能是person,name值就是“person.age”,代表用户年龄。后台也要有成员变量person,这样struts就能接受person对象,直接可以拿到其中的年龄。
其次,你所谓的传递grid,其实是传递store中得数据,方法是可以先将store的数据拿出来,然后转成json传,将json串赋值给xxx就可以了,后台用request.getParameter("gridData")可以得到json串,再将其转化成对象,就可以得到对象的属性,也就是每条数据的信息了。你也可以在前台不转,直接传到后台,后台用数组接收,不过拿到每个属性不太好拿。
这样其实从前台拿到的是一个对象--------form传递过来的,还有一个应该是一个List集合,里面是grid的每一条数据,如果你想事务控制,我告诉真的就是写在一个service方法,因为你在action中调用的service方法的参数应该有form传过来的对象和那个List,在service当然就可以一起处理这些东西了,不明白就别说别人说的不对,你以为你就是对的啊。那是你没理解!
好吧,总结一下,前台传一个form对应的对象,再传一个grid的List,后台一个action同时接受这两个参数,然后调用service方法,此方法至少有两个参数,一个是form对应的对象,一个是grid对象的List,在service处理这两个参数,spring自动就会实现事务处理!
ExtJS 博大精深,不会就态度好点请教别人,别搞得自己像是不耻下问似,不一定有人理解,我也就是喝点酒,不然懂的人看你那几句白痴话就不愿意回答你。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)