extjs 从action层获得list,使其展示在form表单里的textfield,如何实现?后台已完成,到前台交互时,不会写。求大神指导。妹纸先谢谢啦
后台action:
//与前台form表单相联系 private List<DataTPSdto> dataTypeList; public List<DataTPSdto> getDataTypeList() { return dataTypeList; } public void setDataTypeList(List<DataTPSdto> dataTypeList) { this.dataTypeList = dataTypeList; } public String viewFormData(){ dataTypeList = new ArrayList<DataTPSdto>(); DataTPSdto d1 = new DataTPSdto(); d1.setDataTpDesc("描述"); d1.setDataTpName("int"); d1.settNDataTPId(1L); d1.setParent(false); dataTypeList.add(d1); return "viewFormData/success"; }
xml配置:
<!-- 传dataType数据至前台form --> <result name="viewFormData/success" type="json"> <param name="root">dataTypeList</param> </result>前台js:
Ext.onReady(function(){ var myFormPanel = new Ext.form.Panel({ width: 845, autoHeight: true, layout: { type: 'column' }, bodyPadding: 10, items:[ { xtype: 'textfield', margin: '5 10 5 10', width: 282, fieldLabel: 'Data Id', labelWidth: 130, emptyText:"Id", id:"tNDataTPId", name:"tNDataTPId" //value:"PropertyTypeName" }, { xtype: 'textfield', margin: '5 10 5 10', width: 282, fieldLabel: 'Data Name', labelWidth: 130, emptyText:"Name", name:"DataTpName" // value:"PropertyTypeDiscripiton" }, { xtype: 'textfield', margin: '5 10 5 10', width: 282, fieldLabel: 'Data Desc', labelWidth: 130, emptyText:"Desc", name:"DataTpDesc" // value:"PropertyTypeDiscripiton" }, { xtype: 'textfield', margin: '5 10 5 10', width: 282, fieldLabel: 'IsParent', labelWidth: 130, emptyText:"parent?", name:"isParent" // value:"PropertyTypeDiscripiton" } ] }); myFormPanel.render(document.body); Ext.define("dataTypeList",{ extend:"Ext.data.Model", fields: [{name: 'dataTypeList.tNDataTPId',type:'string'}, {name: 'dataTypeList.DataTpName',type:'string'}, {name: 'dataTypeList.DataTpDesc',type:'string'}, {name: 'dataTypeList.isParent',type:'string'} ] }); Ext.Ajax.request({ url:"test/test!viewFormData.action", success:function(response,options){ var o = Ext.JSON.decode(response.responseText); var control = o.control; alert(control);//此处alert出undefined //Ext.getCmp("tNDataTPId").setValue(o.name); } }); });页面效果图:
请求的响应截图:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
@lxbzmy 那我想请问这样的话在formPanel中对应的什么,是通过name对应的么?
formPanel.getForm().setValues(json) 直接设置表单,要求key能对应上,个别对应不上的需要手工设置。
在高级点就用form.load ,不过更麻烦点。
@remielxf 没误导啦,我也看过文档,没有实例参考,我有些不会写,总是报错。不过,还是谢谢啦~
回复
load( Object/String/Function config ) : Ext.Panel
利用XHR的访问加载远程的内容,立即显示在面板中。Loads this...
利用XHR的访问加载远程的内容,立即显示在面板中。Loads this content panel immediately with content returned from an XHR call.
参数项:
config : Object/String/Function
特定的配置项对象,可包含以下选项: A config object containing any of the following options:
返回值:
Ext.Panel
this
Panel
看了一下文档。。我也不知道可不可以。。我就不误导你了....
@remielxf 唉,我是新手,很多方法了解得还不是很透彻,想到的方法都是比较死的,或者有点绕的,我也想改进,但不知道如何写,能不能把你说的这个方法详细说一下啊,谢啦谢啦~
是不是要配置id属性啊?
还有ext没有类似loadform的方法吗
alert(o.dataTpName);
var o = Ext.JSON.decode(response.responseText);
debug看看是什么 是数组的话 你再o[0]才能取到那个对象
var o = Ext.JSON.decode(response.responseText);
debug看看是什么 是数组的话 你再o[0]才能取到那个对象
@remielxf 确实是的,我看响应里的数据,把dataTpName看成了control内的其中一项了,我现在alert(o.dataTpName),结果出来了,是正确的,请问,我该怎么把他们一个一个地对应放到textfield里面呢,用我注释掉的那一行吗?(//Ext.getCmp("tNDataTPId").setValue(o.name);)
回复
你试试嘛。。我也没用过ext...我ligerUI 比较熟。
回复
试过了,是可以的,谢啦!
control 里没有dataTpName 属性啊....你自己看看 当然undefined