用后台JSON填充EXT FormPanel 无数据显示

问题描述

我再TABPANEL上建了grid,在选择grid上的一条数据后点击“修改”按钮,弹出个window内嵌套了FormPanel 并用后台传来的JSON数据填充该FORM。页面倒是弹出来了,后台传来的JSON也正常啊,但怎么就是数据填充不上去啊。。。有谁来帮我看看什么问题吗~?代码如下var but = this;but.setDisabled(true);var gridPanel = Ext.getCmp(n.id);var gsm = gridPanel.getSelectionModel();var row = gsm.getSelections();if (row.length > 0 && row.length <= 1) {var selectRowId = row[0].get("userId");if (!Ext.getCmp(n.id + 'edit-user-win')) { // 判断是否已经存在该窗口 n.id是树节点的ID// alert(selectRowId);new Ext.Window({id : n.id + 'edit-user-win', // 设置IDiconCls : 'option',title : '修改用户',collapsible : true,width : 400,height : 320,plain : true,resizable : false, // 不能调整大小items : new Ext.form.FormPanel({id : n.id + 'edit-user-form',layoutConfig : {labelSeparator : ":"},labelWidth : 80,labelAlign : "right",layout : "form",headerAsText : false,animCollapse : true,autoScroll : false,buttonAlign : "right",hideBorders : false,disabledClass : 'color:black',frame : true,border : false,reader : new Ext.data.JsonReader({successProperty : 'success',root : 'user',id : 'userId'}, new Ext.data.Record.create([{name : 'users.userId',mapping : 'userId',type : 'string'}, {name : 'users.userName',mapping : 'userName',type : 'string'}, {name : 'users.trueName',mapping : 'trueName',type : 'string'}, {name : 'users.tel',mapping : 'tel',type : 'string'}, {name : 'users.mobile',mapping : 'mobile',type : 'string'}, {name : 'users.email',mapping : 'email',type : 'string'}, {name : 'users.address',mapping : 'address',type : 'string'}, {name : 'users.sex',mapping : 'sex',type : 'string'}])),bodyStyle : 'padding:5px',defaults : {width : 100},items : [{xtype : 'hidden',id : 'edit-userId',name : 'users.userId'}, {xtype : "textfield",id : 'edit-userName',name : 'users.userName',fieldLabel : "用户名",anchor : "100%",disabled : true,anchor : '95%'}, {xtype : "textfield",id : 'edit-trueName',name : 'users.trueName',fieldLabel : "姓名",anchor : "100%",emptyText : "请输入您的真实姓名",maxLength : 20,maxLengthText : "姓名输入过长,必须在20个字符以内",allowBlank : false,blankText : "姓名为必填字段",anchor : '95%'}, {xtype : "combo",id : 'edit-sex',name : 'users.sex',triggerAction : "all",fieldLabel : "性别",anchor : "100%",readOnly : true,store : new Ext.data.SimpleStore({fields : ["value","name"],data : [['男', '男'],['女', '女']]}),displayField : 'name',valueField : 'value',mode : 'local',// lazyRender : true,// typeAhead : true,// triggerAction : 'all',// forceSelection : true,anchor : '95%'}, {xtype : "textfield",id : 'edit-tel',name : 'users.tel',fieldLabel : "电话号码",anchor : "100%",maxLengthText : "电话号码过长",maxLength : 15,emptyText : "",regex : /^[0-9]+$/,regexText : '输入必须为数字',anchor : '95%'}, {xtype : "textfield",id : 'edit-mobile',name : 'users.mobile',fieldLabel : "手机号码",anchor : "100%",maxLengthText : "手机号码过长",maxLength : 15,regex : /^[0-9]+$/,regexText : '输入必须为数字',anchor : '95%'}, {xtype : "textfield",id : 'edit-email',name : 'users.email',fieldLabel : "电子邮件",anchor : "100%",vtype : "email",vtypeText : "电子邮件格式不正确",maxLengthText : "电子邮件过长",maxLength : 100,anchor : '95%'}, {xtype : "textarea",id : 'edit-address',name : 'users.address',fieldLabel : "地址",maxLength : 200,maxLengthText : "地址过长,必须在200个字符以内",anchor : '95%'}],buttons : [{text : '确定',type : 'submit',handler : function() {}}]})}).show();Ext.getCmp(n.id + 'edit-user-form').form.load({url : 'findUser',params : {'users.userId' : selectRowId}});} else {Ext.getCmp(n.id + 'edit-user-win').setActive(true);}Ext.getCmp(n.id + 'edit-user-win').on('close', function() {but.setDisabled(false);// grid面板上修改按钮});} else {Ext.Msg.show({title : '操作提示',msg : '请确认是否选中一条需要操作的信息!',buttons : Ext.Msg.OK,icon : Ext.Msg.INFO});but.setDisabled(false);}后台传来的JSON也正常啊如下:{"success":true,"user":{"address":null,"createDate":null,"email":null,"flag":null,"mobile":null,"sex":null,"tel":null,"trueName":"123123","updateDate":null,"userId":"20100902000000000047","userName":"123123","userPwd":null}}下图是firebug控制台的东西。。。得到的JSON数据 问题补充:babydeed 写道

解决方案

我用的3.1版本测试的 没发现什么问题 值赋上去了
解决方案二:
对上了 他用的mapping了
解决方案三:
你的这个extjs写的属性是:'users.tel' 而你返回的是user.tel对不上号
解决方案四:
是的 我测试直接用你的数据 直接返回的

时间: 2024-12-24 21:45:07

用后台JSON填充EXT FormPanel 无数据显示的相关文章

Ext 在 Ajax 中 回调 后台 json 问题

问题描述 Ext 在 Ajax 中 回调 后台 json 结果没有走success方法而是弹出了一个ie下载窗口名称是txlGroupAdd.action,打开之后是要传到前台的json---{success:true,msg:'添加成功'}{text : "提 交",handler : function() {var txlgourpid=document.getElementById('parorgextid').value;var txlgroupname=panel.getFo

ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)

前言:说句实话,此extjs系列的文章在博客园中的热度不高,可能是学这玩意的人不多吧,但是我觉得有这么个系列的文章对于中国朋友非常有帮助!请大家支持! 上篇ExtJs2.0学习系列(5)--Ext.FormPanel之第二式中我们讨论了下fieldset和表单验证的知识,今天我们接着深入解析表单元素中ComboBox组件的使用.会涉及 到.net简单服务器数据交互,但暂不做深入讨论,以后会详细分析服务器交互相关,不过可能要等较长一段时间,呵呵! 5.服务器数据作为ComboBox的数据源实例 首

关于ext入门的数据显示问题

问题描述 关于ext入门的数据显示问题 前台代码 Ext.onReady(function(){ var newFormWin; var userform; var data = [ ['1', '2','3'], ['2', '2','3'], ['3', '2','3'] ]; // create the Data Store 数据 var store = new Ext.data.Store({ reader:new Ext.data.ArrayReader({ fields : [ {n

Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别_YUI.Ext相关

(1)Ext.FormPanel f.getForm().submit({ url:"......", params:{ XX:xx .....} success: function (c,v,e) { //e: 触发事件 var json=Ext.decode(v.response.responseText); }, failure:function(c,v,e){} }) (2)Ext.Ajax.request Ext.Ajax.request({ url:"....&q

ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇)

N久没有写extjs的,作为一个新手,我为我的这种懒惰行为感到惭愧! 鉴于有朋友反应前面的文章过于简单,我决定以后的文章如果没有闪光点就放在新手区(如果不适合,请跟帖),不放在首页! 11.checkbox简单示例 效果图: js代码: Ext.onReady(function(){ Ext.QuickTips.init(); var myform=new Ext.FormPanel({ frame:true, width:330, layout:"form", labelWidth:

ExtJs2.0学习系列(8)--Ext.FormPanel之第五式(综合篇)

在上篇和前面的介绍中,我们基本上对form表单中常见组件有了简单的认识,今天我们做个综合点的例子,向服务器提交下! 其实这篇文章很简单,没有什么发光点,暂放首页半天,忘各位理解! 先来个简单的例子,以说明formpanel如何把数据传给其他页面. 效果图: 现在我们要实现的效果是:点击确定,把值传到另一页面!,如下: 原页面js代码为: Ext.onReady(function(){ Ext.QuickTips.init(); var form=new Ext.FormPanel({ frame

ExtJs2.0学习系列(4)--Ext.FormPanel之第一式

上篇中我们讨论了Ext.window的简单使用,今天我们要看看强大的FormPanel,也是继承panel组件的使用. 首先弄清楚这个问题,创建的时候: //查看源代码便知,两种方法是一样的 Ext.form.FormPanel=Ext.FormPanel; 我们还是从最简单的代码实例开始吧: <!--html代码--> <body> <div id="form1"></div> </body> //js代码 var form

Ext.FormPanel 如何清空查询条件

问题描述 有一个列表页面gridPanel , 在列表页面上面加了一些查询条件 (用Ext.FormPanel提交) , 请问在Ext.FormPanel里面有没有自带的方法能清空FormPanel 的查询条件.如果没有这种方法, 是否能够获得forumpanel中的所有查询条件,并用for循环把这些值设置为空 解决方案 FormPanel.getForm().reset();//重置表单解决方案二:楼上们的正解 也可以 你new出的form名.form.reset()解决方案三:formnam

元素-ext formpanel 动态添加组件到指定位置

问题描述 ext formpanel 动态添加组件到指定位置 每组checkbox下有一个添加按钮,点击按钮,给checkbox加元素 解决方案 怎么都没人回答,自己顶