我要实现的功能是 在双击grid里面的行后 获取该行的ID 然后把ID传到后台service层做处理, 返回该行数据
项目采用 spring+hibernate+ExtJS+DWR 实现
以前做的时候 我在双击grid行的时候,传递record 执行以下方法,
- JScript code
function operate(record){ myForm.getForm().loadRecord(record) myWindow.show(); };
这样是很简单, 但是如果我在form里面有复选框 就无法绑定, 所以我选择后者, 与后台service层交互
这个时候 我在双击grid里面行的时候, 就传递id 执行以下方法,
- JScript code
function operate(personId){ myForm.getForm().load({ url: myPerson.findById(personId) }); myWindow.show(); };
后台findById 如下
- Java code
public void findById(Long id, HttpServletResponse response) { Person person = personDAO.findById(id); List list = new ArrayList(); list.add(person); JSONObject job = new JSONObject(); job.put("success", true); job.put("person", list); try { System.out.println(job.toString()); response.getWriter().print(job.toString()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("ok1"); e.printStackTrace(); } }
后台进去了 System.out.println(job.toString()); 打印有值 值为
{"person":[{"sex":"1","age":"25","hobby":"1,3","personId":1001,"personName":"Damon"}],"success":true}
我的formpanel 是这样写的
- JScript code
var myForm = new Ext.form.FormPanel({ width: 300, bodyStyle: 'padding:5px 5px 0', frame: true, reader: new Ext.data.JsonReader({ successProperty: 'success', root: 'person' },['personId','personName','sex','age','hobby']), items: [ { fieldLabel:'PERSONID', xtype:'textfield', readOnly:true, name:'personId', id:'personId', readOnly: true }。。。。。。。
后面部分我省略了, 结果取不到值, 弄了半天没弄出来, 请各位帮帮我, 谢谢
------解决方案--------------------
“但是如果我在form里面有复选框 就无法绑定,”。。。。。
你点击的是Grid,跟这个form有什么关系。你现在用了几个pannel,是一个GridPanel和一个formPanel吗
------解决方案--------------------
知不知道你自己在说什么啊?
数据是 store的部分 跟grid 和 form毫无关系的