从商店中删除新添加的记录后刷新网格面板

时间:2015-02-16 15:42:49

标签: extjs extjs4.2

如何从网格面板中删除新添加的行? gridpanel绑定到商店。

我用:

store.remove(record);
store.sync();

它在网格中的现有记录上工作正常,记录直接从网格中删除,但是当我添加记录并希望立即删除它时,它不会从网格中“删除”。

调用api,所以记录被“从数据库中删除”,当我这样做时记录确实消失了。浏览器刷新。

有谁知道这是如何工作的?提前谢谢。

商店配置

Ext.define('Iziezie.store.animal.doggywood.animal', {
    extend: 'Iziezie.store.animal.animal',

    model: 'Iziezie.model.animal.doggywood.animal',

    proxy: {
        type: 'baseProxy',
        api: {
            create: '../php/api/doggywood_animals.php?request=create',
            read: '../php/api/doggywood_animals.php?request=read',
            update: '../php/api/doggywood_animals.php?request=update',
            destroy:  '../php/api/doggywood_animals.php?request=destroy'
        }

    }

});

新记录按表格添加:

var store = gridpanel.getStore();
var model = Ext.ModelMgr.getModel(store.model);

var record = model.create();
store.insert(0, record);

...

frm.loadRecord(record);

表格提交

frm.updateRecord();
var record = frm.getRecord();
record.save();

取消:

var sm = gridpanel.getSelectionModel();
var record = sm.getLastSelected();
var store = gridpanel.getStore();

store.remove(record);
store.sync();

2 个答案:

答案 0 :(得分:1)

要强制在网格上进行可视刷新,您只需调用

即可
myGridPanel.getView().refresh();

但这不应该是必需的,网格应该只显示商店中的任何内容。你能发布你正在做的事情的完整代码样本吗?

答案 1 :(得分:0)

尝试使用行编辑创建一个到网格面板的新记录:

createRecord: function() {
    var model = Ext.ModelMgr.getModel('EKOJS.model.m_yourmodel');
    var r = Ext.ModelManager.create({
        id: '',
        text: ''
    }, model);
    this.getYourgridaliasview().getStore().insert(0, r);
    this.getYourgridaliasview().rowEditing.startEdit(0, 0);
},

并删除网格面板中的所选记录:

deleteRecord: function(dataview, selections) {
    var getstore = this.getYourgridaliasview().getStore();
    var selection = this.getYourgridaliasview().getSelectionModel().getSelection()[
        0];
    if (selection) {
        Ext.Msg.confirm('Confirmation',
            'Are you sure to delete this data: id = "' + selection.data
            .id + '"?', function(btn) {
                if (btn == 'yes') {
                    getstore.remove(selection);
                    getstore.sync();
                }
            });
    }
},

并且,重要的事情总是在创建这样的记录后重新加载你的商店:

Ext.Ajax.request({
    method: 'POST',
    url: '../php/api/doggywood_animals.php?request=create',
    params: {
        data: jsonData
    },
    success: function(response) {
        e.store.reload({
            callback: function() {
                var newRecordIndex = e.store.findBy(
                    function(record, id) {
                        if (record.get('id') === e.record
                            .data.id) {
                            return true;
                        }
                        return false;
                    });
                /* me.grid.getView().select(recordIndex); */
                me.grid.getSelectionModel().select(
                    newRecordIndex);
            }
        });
    }
});

我使用的rowediting插件编辑后的监听器如下所示:

'afteredit': function(editor, e) {
    var me = this;
    if ((/^\s*$/).test(e.record.data.id)) {
        Ext.Msg.alert('Peringatan', 'Kolom "id" tidak boleh kosong.');
        return false;
    }
    /* e.store.sync();
                    return true; */
    var jsonData = Ext.encode(e.record.data);
    Ext.Ajax.request({
        method: 'POST',
        url: '../php/api/doggywood_animals.php?request=create',
        params: {
            data: jsonData
        },
        success: function(response) {
            e.store.reload({
                callback: function() {
                    var newRecordIndex = e.store.findBy(
                        function(record, id) {
                            if (record.get('id') ===
                                e.record.data.id
                            ) {
                                return true;
                            }
                            return false;
                        });
                    /* me.grid.getView().select(recordIndex); */
                    me.grid.getSelectionModel().select(
                        newRecordIndex);
                }
            });
        }
    });
    return true;
}

对你来说可能有点帮助。

相关问题