Удалить несколько элементов из сетки с помощью CheckboxSelectionModel

Использование ExtJs4.1 на Sencha Architect.

У меня есть следующий код в моем коде onDeleteButton

onDeleteButtonClick: function(button, e, options) {
     var active = this.activeRecord;
     var myGrid = Ext.getCmp('publisherResultsGridView'),
         sm = myGrid.getSelectionModel(),
         selection = sm.getSelection(); // gives you a array of records(models)

     if (selection.length > 0){
            for( var i = 0; i < selection.length; i++) {
                            this.application.log('OnDeleteItemID is ' + selection);
            }
            this.remove(selection);
     }

Код для функции Remove

remove: function(record) {
        var store = Ext.getStore('PublisherProperties');
        store.proxy.url = MasterDataManager.globals.url + "Publishers/";
        store.remove(record);
        store.sync();

Когда я запускаю его, я вижу массив объектов в своем журнале, а также я не получаю никаких ошибок после выполнения функции удаления. Но магазин не обновляется, я имею в виду, что он не удаляет выбранные элементы.

Может кто-нибудь, пожалуйста, помогите мне.

Спасибо


person aMazing    schedule 14.01.2013    source источник
comment
Вы можете написать, как создается магазин. Похоже, есть проблема с настройкой прокси-апи. docs.sencha .com/ext-js/4-1/#!/api/Ext.data.proxy.Server-cfg-api. Или, может быть, магазин в getStore указан не тот. Каждая запись имеет свойство хранилища, что было бы предпочтительным способом получения ссылки без использования жестко закодированных идентификаторов.   -  person pllee    schedule 15.01.2013


Ответы (1)


Я решил свою проблему, внеся следующие изменения.

To onDeleteButtonClick

if (selection.length > 0){
                for( var i = 0; i < selection.length; i++) {
                                this.application.log('OnDeleteItemID is ' + selection[i].data.id);
                                this.remove(selection[i]);
                }

         }

К Remove функции

remove: function(record) {
    var store = Ext.getStore('PublisherProperties');
    this.application.log('Remove Function is ' + record);
    store.proxy.url = MasterDataManager.globals.url + "Publishers/" + record.data.id;
    store.load({
                        scope : this,
                        callback : function(records, operation, success){
                            if (records.length > 0){
                                var store2 = Ext.getStore('PublisherProperties');
                                        store2.proxy.url = MasterDataManager.globals.url + "Publishers/";
                                        store2.remove(records[0]);
                                        store2.sync();
                             }
                        }
            });
    //store.remove(record);
    //store.sync();
person aMazing    schedule 14.01.2013