将记录添加到商店并显示在网格上

时间:2019-07-19 09:35:21

标签: extjs

我有AddRecord方法,该方法应该将记录添加到存储中并在记录的网格上显示。

我已将表格放在窗口内,这很好。 我在看文档,但是有点迷路。 创建了一个小提琴。 这是小提琴:https://fiddle.sencha.com/#view/editor&fiddle/2tuf

AddRecord: function (grid, rowId, record) {
        Ext.create('Ext.window.Window', {
              title: "Add Person",
              height: 200,
              width: 400,
            closeAction: 'hide',
            closable: true,

          items: [{
              xtype:'form',
                defaultType: 'textfield',
                layout: 'anchor',

             items: [{
                fieldLabel: 'First Name',
                    name: 'First Name',
                    type: 'String',
                    allowBlank: false
                }, {
                    fieldLabel: 'Last Name',
                    name: 'Last Name',
                    type: 'String',
                    allowBlank: false
                }, ],
             buttons: [{
                text: 'Add',
                 formBind: true,
                 disabled: true,
                 handler: function () {

                         var record = Ext.getStore().getAt(rowId);
                         var store = grid.getStore('store.Personal')
                         var form = this.up('form').grid.getStore();
                         if (form.isValid()) {
                             form.add({
                                 success: function (record) {
                                     var store = grid.getStore('store.Personal')
                                     store.add(record);
                                 },
                             })

                         }
                 },
             }, {
                     text: 'Close', handler: function () {
                        this.up('window').close();
             }

         }],

          }]

     }).show();
    }
});

1 个答案:

答案 0 :(得分:0)

您快到了,您对grid.getStore()有点困惑,因为它只是

  

返回与此面板关联的商店。

以及如何获取表单值,我认为您正在尝试执行以下操作:

buttons: [{
    text: 'Add',
    formBind: true,
    disabled: true,
    handler: function(button) {
        let formValues = this.up('form').getForm().getValues(); //get the form Values
        let form = this.up('form').getForm(); //get the form itself
        var store = grid.getStore(); //get Store of your grid
        if (form.isValid()) {
            //add the formvalues to store
            store.add(formValues);
        }
    },
}]

我也做了一个Fiddle