我从数据库获得了数据 是这种形式
{"code":"datadict2","id":4,"name":"数据字典2","parentId":4}
想要显示在dataDictTabPanel = Ext.extend(Ext.FormPanel,{
         //定义构造器
        constructor: function(){
            var dataDictId = new Ext.form.TextField({
                id: 'dataDictId',
                name : 'dataDictId',
                fieldLabel: '数据字典ID',
                anchor : '90%'
            });      
            var dataDictName = new Ext.form.TextField({
                id: 'dataDictName',
                name : 'dataDictName',
                fieldLabel: '数据字典名称',
                anchor : '90%'
            }); 
            var dataDictCode = new Ext.form.TextField({
                id: 'dataDictCode',
                name : 'dataDictCode',
                fieldLabel: '数据字典编码',
                anchor : '90%'
            }); 
            dataDictTabPanel.superclass.constructor.call(this,{
                labelAlign: "right",
                buttonAlign: "right",
                frame: true,
                bodyStyle: "padding:0 0",
                autoScroll: true,
                items: [{
                    layout: "column",
                    items: [{
                        columnWidth: 1,
                        layout: 'form',
                        defaultType: 'textfield',
                        items: [dataDictId, dataDictName, dataDictCode]
                    }]
                }]
            });
            
         }
    });原本用的是这种方式 var json = response.responseText;
                    var json = eval("("+json+")");
                    Ext.getCmp('dataDictId').setValue(json.id);
                    Ext.getCmp('dataDictName').setValue(json.name);
                    Ext.getCmp('dataDictCode').setValue(json.code);但是涉及到重用的问题 有bug,想要使用var record = this.lawExpMaintenanceGridPanel.getSelectionModel().getSelected();
                 this.showWin("edit");
                 //表单加载数据
                 this.lawExpMaintenanceFp.form.loadRecord(record);
这种record形式 但是不知道怎么把从转换成 record 的 求大侠们帮帮忙 真的很急

解决方案 »

  1.   

    Ext.data.Record是一个设定了内部数据类型的对象.可以用其create方法创建Record,如下:var Ext_record=Ext.data.Record.create({
      {name:'name',type:'string'},
      {name:'sex',type:'int'}
    });
      

  2.   

    不要用getCmp
    用 form.findField('文本框的name')你这是做修改? 一般是从新请求次数据库
    尽量保证数据是最新的 以免覆盖别人的修改如果你们的业务没这用要求 楼主上的方法应该足够了
      

  3.   

    我这样写的,页面无法显示,放在方法外面和里面页面都无法显示 DictInfoPanel = function(node, grid){
         var initRecord = Ext.data.Record.create({
        {name:'dataDictName',type:'string'},
        {name:'dataDictCode',type:'string'}
    });
        //获得右侧tab对象
        Ext.Ajax.request({

    url : "/datadict/DataDictServlet?parameter="+node.id,
    method : "GET",
    callback : function(args, success, response) {
         var json = response.responseText;
             var json = eval("("+json+")");
        
    if(success){
    var panel = Ext.getCmp("dataDictCenterPanel");
    panel.findField('dataDictName');
    panel.findField('dataDictCode');

    var tab = panel.findById(node.id);
    if(!tab){
        tab = panel.add({
        id: node.id,
        xtype:"panel",
        title:node.text,
        closable:true,
        layout:"fit",
        items:[grid]
         });
    }
    panel.setActiveTab(tab);
    }
    },
    scope: this
    });
        }
      

  4.   

    我这样写了报错说 对象不支持此属性或方法DictInfoPanel = function(node, grid){
        //获得右侧tab对象
        Ext.Ajax.request({
    waitMsg : '读取数据',
    url : "/datadict/DataDictServlet?parameter="+node.id,
    method : "GET",
    callback : function(args, success, response) {
         var json = response.responseText;
             var json = eval("("+json+")");
         //Ext.getCmp('dataDictName').setValue(json.name);
         //Ext.getCmp('dataDictCode').setValue(json.code);
    if(success){
    var panel = Ext.getCmp("dataDictCenterPanel");
    panel.findField('dataDictName').setValue(json.name);
    panel.findField('dataDictCode').setValue(json.code);
    var tab = panel.findById(node.id);
    if(!tab){
        tab = panel.add({
        id: node.id,
        xtype:"panel",
        title:node.text,
        closable:true,
        layout:"fit",
        items:[grid]
         });
    }
    panel.setActiveTab(tab);
    }
    },
    scope: this
    });
        }
      

  5.   

    findField 是针对form容器的 你可以尝试panel.getForm().findField 
      

  6.   

    郁闷 报错信息还是一样的DictInfoPanel = function(node, grid){
        //获得右侧tab对象
        Ext.Ajax.request({
    waitMsg : '读取数据',
    url : "/datadict/DataDictServlet?parameter="+node.id,
    method : "GET",
    callback : function(args, success, response) {
        //var json = JSON.parse(response.responseText);
         var json = response.responseText;
             var json = eval("("+json+")");
         //Ext.getCmp('dataDictName').setValue(json.name);
         //Ext.getCmp('dataDictCode').setValue(json.code);
    if(success){
    var panel = Ext.getCmp("dataDictCenterPanel");
    panel.getForm().findField('dataDictName').setValue(json.name);
    panel.getForm().findField('dataDictCode').setValue(json.code);
    var tab = panel.findById(node.id);
    if(!tab){
        tab = panel.add({
        id: node.id,
        xtype:"panel",
        title:node.text,
        closable:true,
        layout:"fit",
        items:[grid]
         });
    }
    panel.setActiveTab(tab);
    }
    },
    scope: this
    });
        }
      

  7.   

    dataDictTabPanel这个是你 放文本框的panel吧你怎么去得到dataDictCenterPanel? 
      

  8.   

    这样好了 您在这个帖子回复下吧 是同样的问题 那个帖子的分页给您
    http://topic.csdn.net/u/20110504/16/9e10f3c0-09dd-48cc-97eb-6463d3f4a1fb.htmlDictInfoPanel = function(node, grid){
        //获得右侧tab对象
        Ext.Ajax.request({
    waitMsg : '读取数据',
    url : "/datadict/DataDictServlet?parameter="+node.id,
    method : "GET",
    callback : function(args, success, response) {
        //var json = JSON.parse(response.responseText);
         var json = response.responseText;
             var json = eval("("+json+")");
        grid.getForm().findField('dataDictName').setValue(json.name);
    grid.getForm().findField('dataDictCode').setValue(json.code);
             //Ext.getCmp('dataDictName').setValue(json.name);
         //Ext.getCmp('dataDictCode').setValue(json.code);
    if(success){
    var panel = Ext.getCmp("dataDictCenterPanel");
    var tab = panel.findById(node.id);
    if(!tab){
        tab = panel.add({
        id: node.id,
        xtype:"panel",
        title:node.text,
        closable:true,
        layout:"fit",
        items:[grid]
         });
    }
    panel.setActiveTab(tab);
    }
    },
    scope: this
    });
        }