如何在保存chnages后将编辑过的记录放在网格中的第一个位置?

时间:2015-06-24 08:36:38

标签: extjs4

我正在使用Extjs 4.2.1,我问自己一段时间后如何在保存过程发生后将编辑和保存的记录放在网格顶部。因此,用户可以看到保存的更改的效果。

我试图在商店的save方法的成功回调方法之间添加一些代码。它看起来像这样:

store.save({
    success : function(rec, op, success) {

    var selectionModel = Ext.getCmp('grid').getSelectionModel();
    var selection = selectionModel.getSelection();
    selectionModel.select(selection);
    billRecordStore.insert(0, selection);
    billRecordStore.reload();
    Ext.getCmp('grid').getView().refresh();
}

但我不知道如何在桌面上获得改变的记录.... 非常欢迎任何想法和有用的帖子!

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

当我编辑记录时,我不使用load()或reload()方法。 我只使用sync()方法。

这样编辑的寄存​​器在网格中保持突出显示。

这样的事情:

var values = form.getValues();
var record = form.getRecord();
record.set(values);

var store = grid.getStore();

store.sync({
   success: function(){...},
   failure: function(){...}
});

当我创建新记录时,我对网格记录进行了排序,以便最后插入的记录显示在第一行。

因此,当它执行load()或loadPage(1)时,始终选择与最后插入的记录对应的网格的第一行。

2015年6月26日编辑

        var form = Ext.ComponentQuery.query('#formitemId')[0];
        var grid = Ext.ComponentQuery.query('#griditemId')[0];
        var values = form.getValues();
        var record = form.getRecord();

        record.set(values);

        var store = grid.getStore();

        store.sync({
            callback: function(){
                var record1 = grid.getSelectionModel().getLastSelected(record);
                form.loadRecord(record1);
            },
            scope: this,

            success: function(){

                var windowInfoCNrecord = Ext.MessageBox.show({
                        title:'INFO',
                        msg: 'Success...',
                        closable: true,
                        modal: false,
                        iconCls: 'msg_success',
                        icon: Ext.MessageBox.INFO
                });

            },
            failure: function(){
                var windowInfoErrorEdit = Ext.Msg.alert({
                    title: 'Error',
                    message:'Error...!',
                    icon: Ext.Msg.ERROR,
                    button: Ext.Msg.CANCEL,
                    buttonText:{
                        cancel: 'Close'
                    },
                });
            }
        }); //sync