Extjs存储插入行编辑器

Extjs存储插入行编辑器,extjs,extjs6,Extjs,Extjs6,设置: 我有一个带有roweditor插件的网格。在工具栏上,我有一个“添加新行”按钮来插入新行。 问题是: 当我尝试添加新记录时,我的store.insert(0,rec)似乎不会将记录添加到0索引上 我的看法是: Ext.define("app.view.partners.Partners",{ extend: "Ext.grid.Panel", alias: 'widget.partners', requires: [ "Admin.view.partners.PartnersC

设置: 我有一个带有roweditor插件的网格。在工具栏上,我有一个“添加新行”按钮来插入新行。 问题是: 当我尝试添加新记录时,我的store.insert(0,rec)似乎不会将记录添加到0索引上

我的看法是:

Ext.define("app.view.partners.Partners",{
extend: "Ext.grid.Panel",
alias: 'widget.partners',

requires: [
    "Admin.view.partners.PartnersController",
    "Admin.view.partners.PartnersModel"
],
height: 700,
controller: "partners",
viewModel: {
    type: "partners"
},
bind: {
    store: '{partners}'
},
title: "Partners List",
columns: [
    { header: 'id', dataIndex: 'id', hidden: true},
    { header: 'Partner', dataIndex: 'Partner', flex: 3,
        editor: {
            xtype: 'textfield',
            allowBlank: false
        }
    }

],

tbar: [{
    text: 'Add record',
    iconCls: 'fa fa-plus-square green',
    handler: 'onAddClick'
}],
selType: 'rowmodel',
plugins: [{

    ptype: 'rowediting',
    clicksToMoveEditor: 1,
    pluginId: 'partnersRowEditingPlugin',
    autoCancel: false,
    listeners: {
       edit: 'onEditClick',
       canceledit: function(rowEditing, context) {
            // Canceling editing of a locally added, unsaved record: remove it
            if (context.record.phantom) {
                context.store.remove(context.record);
            }
        }
    }
  },{ptype: 'bufferedrenderer'},
    {ptype: 'gridfilters'}
  ]
});
我的viewmodel:

Ext.define('app.view.partners.PartnersModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.partners',
stores: {
    partners:{
        model: 'app.model.Partners',
        storeId: 'partners',
        autoLoad: true,
        sorters: [{
            property: 'id',
            direction: 'DESC'
        }],
        proxy:{
            type: 'ajax',
            // load remote data using HTTP
            url: 'read.php',
            reader: {
                type: 'json',
                idProperty: 'id',
                rootProperty: 'data',
                totalProperty:'total'
            }
        } 
    }
}

});
在viewcontroller中:

onAddClick: function(){
    var rec = new app.view.partners.PartnersModel({});
    //var rec = new new Admin.model.Partners({});

    this.isNewRecord = true;

    var store = this.getView().getStore();

    store.insert(0, rec);

    this.getView().getPlugin(controllerName + 'RowEditingPlugin').startEdit(0,0);
}

看起来存储区进行了插入,但最后插入。我可以看到它作为最后一条记录添加到网格中


我不知道我做错了什么。

您要求对存储进行排序,因此在特定索引处插入是没有意义的,它将插入正确排序位置的任何位置。您完全正确!!!我完全错过了。谢谢你,伙计!