问题描述
我再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对不上号
解决方案四:
是的 我测试直接用你的数据 直接返回的