【问题标题】:delete from rest store using EXTJS keep deleting previous record again使用EXTJS从rest store中删除继续删除以前的记录
【发布时间】:2015-02-22 07:10:05
【问题描述】:

以下是删除记录的代码,但第一次(页面重新加载后)删除记录没有问题。但是当我删除另一条记录时,商店试图删除它和以前删除的记录,这会导致错误消息,因为以前不存在。 不知道如何清除删除缓存或者我应该怎么做以防止第二次删除不会删除以前的记录。

text: 'Delete',
itemId: 'sa-delete',
disabled: true,
handler: function(b, e) {
    var selected = this.getSelectionModel().selected;
    Ext.Msg.confirm(this._t('Delete User'), this._t('Delete this User'),                    function(button) {
    if (button === 'yes') {
        this.store.remove(selected.items);
        this.store.sync({
        success: function() {
        this.fireEvent('deleted', selected.items);
        },
        scope: this
    });
  }
}, this);

提前致谢, 金

【问题讨论】:

  • 通常你使用 getSelections() 而不是选中的属性
  • 一定有更多的代码导致了这种情况。您的商店定义是什么样的?
  • 它看起来像一个错误。作为一种解决方法,您可以尝试 this.store.commitChanges() 来清除更改。 @mindparse、getSelection() 和 selected 工作相同。实际上 getSelection() 内部返回 selected.getRange()

标签: extjs4


【解决方案1】:
Ext.define('Console.view.admin.USERList',{
    extend: 'Console.lib.BaseGrid',
    alias: 'widget.admin_user_list',
    store: 'USERs',
    requires:['Console.view.admin.USERWindow'],
    cls:'center-panel',
    title:'Users',
    searchable: false,
    columns: [{
        header: 'Name',
        dataIndex: 'name',
        hideable: false,
        flex: 0.75
    }, {
        header: 'Status',
        dataIndex: 'state',
        hideable: false,
        flex: 0.5
    }],
    enable_item_buttons: function() {
        var tbar = this.dockedItems.items[1];
        tbar.items.each(function(item) {
            if (item.disabled) {
                item.enable();
            }
        });
    },
    disable_item_buttons: function() {

    },
    initComponent: function() {
        this.tbar_cfg = ['->',{
            text: 'Add User',
            scope: this,
            handler: function(b, e) {
                this.load_user();
            }
        },
        {
        text: 'Delete',
            itemId:  'user-delete',
            disabled: true,
            handler: function(b, e) {
                var selection = this.getSelectionModel().getSelection()[0];
                if (selection) { 
                    Ext.Msg.confirm(this._t('Delete User'), this._t('Delete this User'), function(button) {
                        if (button === 'yes') {
                            this.store.remove(selection);
                            this.store.sync({
                                success: function() {
                                    this.fireEvent('deleted', selection);
                                },
                                scope: this
                            });
                        }
                    }, this);
                }

            },
            scope: this
        } , 
        {
            text: 'Generate',
            // save -  selected.items[0].data.name
            itemId: 'user-regenerate',
            disabled: true,
            handler: function(b, e) {
                _this = this;
                var selected = this.getSelectionModel().selected;
                _this.regenerate_user();

            },
            scope: this
        }];
        this.callParent(arguments);
        this.on('render',function(){
            this.store.load();
        }, this);
        this.on('itemdblclick', this.load_user, this);
        this.on('select', this.enable_buttons, this);
    },
    load_user: function(e,row){
        var w = Ext.create('Console.view.admin.USERWindow', {record: row});
        var list = this;
        w.on('saadded', function(data) {
            list.refresh_store();
            if (data.updated) {
               Ext.Msg.alert('Updated User Name', data.name);
            } else {
                Ext.Msg.alert('Registration Id', data.registration_id);
            }

        });
        w.show();
    },

     regenerate_user: function(e, row) {
        var _this = this;

        selected = this.getSelectionModel().selected.items[0].data;
        var values = {id:selected.id, name: selected.name, state:selected.state };
        // var selected = this.getSelectionModel().selected;

        var app = Console.model.USER.create(values);
        // app.proxy = app.proxy +  "&regenerate=1";
        app.proxy.extraParams = {
            regenerate: '1'
        }

        this.store.load();
        var f = this;
        app.save({
            success: function(record, raw) {

                try {
                    var data = raw.response.responseText;
                    data = JSON.parse(data);
                } catch (e) {
                    console.error(r);
                }
                // f.fireEvent("saadded", data);
                Ext.Msg.alert('Registration Id', data.registration_id);

            },
            failure: function() {
                b.enable();
                Ext.Msg.alert('Error', this._t('Unable to re-register USER, try again'));
            }
        });

    },

    enable_buttons: function(selmodel, record) {
        var tbar = this.query('toolbar')[0];
        var del = tbar.query('button[itemId=user-delete]')[0];
        var reg = tbar.query('button[itemId=user-regenerate]')[0];

        del.enable();
        reg.enable();
    }
});

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 2010-10-20
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2014-05-06
    • 2019-04-08
    相关资源
    最近更新 更多