ExtJS,oneToMany关系和嵌套表

时间:2012-03-20 16:13:40

标签: extjs

在这里,Sencha团队解释了如何建立一对多关系:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Store

你在这里得到更详细的信息:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.reader.Reader

他们在那里解释

  

“这可能需要考虑很多 - 基本上用户有很多订单,每个订单   其中包含几个OrderItems。最后,每个OrderItem   有一个产品。“

尼斯。

现在我想要一个Form,其中有用户信息PLUS用户命令的网格(不是MVC框架,只是form.Panel的派生类。)

我该怎么做?这是我的form.Panel课程的开头,其中只有字段。我只想添加一个与Product链接的数据网格。

所以我创建了我的商店,就像Sencha给出的示例一样,然后我创建了一个链接到MyFramework.form.Panel的网格,一切正常。我只想制作类似“嵌套表”的东西,即该类中的一对多网格,以显示属于当前用户的产品。

知道怎么做吗?

Ext.define('MyFramework.form.Panel', {
    extend: 'Ext.form.Panel',
    alias: 'widget.writerform',

    requires: ['Ext.form.field.Text'],

    initComponent: function(){
        this.addEvents('create');
        Ext.apply(this, {
            activeRecord: null,
            iconCls: 'icon-user',
            frame: true,
            title: 'User',
            defaultType: 'textfield',
            bodyPadding: 5,
            fieldDefaults: {
                anchor: '100%',
                width: 500,
                labelWidth: 200,
                labelAlign: 'right'
            },  
            items: [{
                xtype:'tabpanel',
                activeTab: 0,
                defaults:{
                    layout: 'fit',
                    bodyStyle:'padding:10px'
                },  
                items:[{
                    title:'General information',
                    defaultType: 'textfield',
                    items: [{
                        fieldLabel: 'Titre ',
                        name: 'titre',
                        allowBlank: false
                    },{ 
                        fieldLabel: 'Image grande ',
                        name: 'imgGrande'
                    }]  
                },{
                    title:'Products',
                    defaultType: 'textfield',
                    items: [
                        /*
                         * Advices/example here!
                         * I'm stuck!
                         */
                    ]  
                }]  
            }]
        });
        this.callParent();
    }
});

1 个答案:

答案 0 :(得分:0)

您可以使用Dynamic Form interacting with an embbed grid的概念。

当然,这不符合您的需求。不过,我的建议是从那里开始,尝试实现一个与嵌入式网格相关的字段,在您的情况下是一个产品网格。

话虽如此,你不会有一个由嵌入网格选择填充的表单,而是一个像ComboBox一样填充的单个字段,但是通过网格选择。

也许尝试Ext.form.LookUp字段,我创建的一个与该问题有关的组件。

此组件并不完全符合您的要求,因为它适用于单个记录,例如one to one关系。但是你可以尝试从那里实现一些东西。