2011-06-02 111 views
1

如何使用数据存储使用JSON数据填充表单?文本字段如何与商店,模型相关联?如何使用数据存储填充JSON数据的表单?

Ext.define('app.formStore', { 
extend: 'Ext.data.Model', 
fields: [ 
    {name: 'naziv', type:'string'}, 
    {name: 'oib', type:'int'}, 
    {name: 'email', type:'string'} 
] 
}); 

var myStore = Ext.create('Ext.data.Store', { 
model: 'app.formStore', 
proxy: { 
    type: 'ajax', 
    url : 'app/myJson.json', 
    reader:{ 
     type:'json'      
    } 
}, 
autoLoad:true 
}); 

Ext.onReady(function() { 


var testForm = Ext.create('Ext.form.Panel', { 
        width: 500, 
        renderTo: Ext.getBody(), 
        title: 'testForm', 
        waitMsgTarget: true, 
        fieldDefaults: { 
         labelAlign: 'right', 
         labelWidth: 85, 
         msgTarget: 'side' 
        }, 
        items: [{ 
         xtype: 'fieldset', 
         title: 'Contact Information', 
         items: [{ 
           xtype:'textfield', 
           fieldLabel: 'Name', 
           name: 'naziv' 
          }, { 
           xtype:'textfield', 
           fieldLabel: 'oib', 
           name: 'oib' 
          }, { 
           xtype:'textfield', 
           fieldLabel: 'mail', 
           name: 'email' 
         }] 
        }] 

      }); 

    testForm.getForm().loadRecord(app.formStore); 
}); 

JSON

[ 
    {"naziv":"Lisa", "oib":"2545898545", "email":"[email protected]"}   
] 

回答

5

模型和形式的字段名应匹配。然后你可以使用loadRecord()加载表单。例如:

var record = Ext.create('XYZ',{ 
    name: 'Abc', 
    email: '[email protected]' 
}); 
formpanel.getForm().loadRecord(record); 

或者,从已加载的商店中获取值。

+0

@Abdel - 它说“naziv”没有定义 – 2011-06-03 11:03:41

+0

testForm.getForm()。load({url:'app/myJson.json “});返回POST错误 – 2011-06-03 11:05:41

+0

@Ingol,我想知道你是否在阅读我的答案后阅读了API文档。检查'loadRecord()'的语法:http://docs.sencha.com/ext-js/4-0/#/api/Ext.form.Basic – 2011-06-03 11:18:23

3

阿卜杜勒奥拉卡拉的答案很好。但如果你想在没有使用商店的情况下进行填充,你也可以这样做:

var record = { 
     data : { 
     group : 'Moody Blues', 
     text : 'One of the greatest bands' 
     } 
}; 
formpanel.getForm().loadRecord(record); 
+0

谢谢! (于6月2日11:18问道) – 2011-12-02 13:56:25

0

我建议你使用Ext Direct方法。这样你可以实现非常漂亮和干净的所有操作:编辑,删除等。