如何将数据从商店加载到Form.Panel?

时间:2012-11-12 08:51:45

标签: javascript extjs extjs3

我有一个form.Panel,其中我显示了一些数据。我从服务器接收XML数据,并使用

将其直接加载到字段中
podform.getForm().load({url:url_servlet+'kadastr_zemform.jsp' ...

以及XMLReader。

现在我想以3个单独的形式显示数据。面板。但是我只是想在将数据加载到面板之前加载一次数据。我想在这种情况下,form.load()不再适用于我。

如何将数据加载到多个面板中?我应该使用商店吗?我还需要能够编辑数据并将其发回去吗?

2 个答案:

答案 0 :(得分:0)

您可以使用一个包含3个子面板的主表单面板,其中包含您需要的字段。然后,如果在窗体上调用load(),如果它们位于不同的子面板中,则字段也将被初始化(因为元素包含在主窗体中):

Ext.create('Ext.form.Panel',{
   layout: 'vbox',
   items: [
   {itemId: 'panel1', xtype: 'panel', layout: 'form', items: [{xtype: 'textfield', name: 'text1'}
   ]},
   {itemId: 'panel2', xtype: 'panel', layout: 'form', items: [{xtype: 'textfield', name: 'text2'},
   {itemId: 'panel3', xtype: 'panel', layout: 'form', items: [{xtype: 'textfield', name: 'text3'}]
});

否则,如果您只能管理一个带子面板的表单面板,则应考虑直接管理Ajax调用(使用Ext.Ajax.request),然后使用生成的对象初始化每个表单。

答案 1 :(得分:0)

我找到两个带商店的解决方案。

var store = new Ext.data.Store({                
            url: url_servlet+"kadastr_zemform.jsp",
            reader: new Ext.data.XmlReader({
            totalProperty: "results", 
            record: "contact",
                            fields: [
                                    ]})
});
store.load();
  1. 您可以使用

     podform.getForm().setValues(store.getRange(0)[0].data);
    
  2. 或者这个:

    var record = store.getAt(0);
    podform.getForm().loadRecord(record);
    
  3. 这个答案来自sencha论坛。 http://www.sencha.com/forum/showthread.php?248760-How-to-load-data-from-store-to-FormPanel&p=912235#post912235

相关问题