Extjs - إزالة المضافة حديثا العنصر المحدد من متجر

StackOverflow https://stackoverflow.com/questions/1211496

  •  06-07-2019
  •  | 
  •  

سؤال

ولقد لإزالة العنصر المحدد في editorgrid. لأول مرة يتم تحميل مخزن ويمكن للمستخدم اختيار لإضافة أو حذف صفوف فارغة لهذه الشبكة التي يمكن بعد ذلك تعديل. المشكلة ليست مع إزالة سجلات الأولية تحميلها من المتجر. وتأتي هذه المشكلة في عند إضافة صف إضافي، وتحريرها ومن ثم اختيار إزالته (قد مستخدم أن تقرر انه لا يحتاج الى هذا الصف بعد كل شيء).

ويبدو أنه عندما أود أن حفظ التغييرات باستخدام store.getModifiedRecords، فإنه لا يزال يرى الصف الذي تم حذفه وذلك بمعالجة أنها كذلك. هنا هو إزالة زر:

442             
443                 text:'Remove',
444                 tooltip:'Remove attribute',
445                 iconCls:'silk-table_delete',
446                 handler: function() {
447                     var selectedItem = attributeEditor.getSelectionModel().getSelected();
448 
449                     // Check if we have selected item
450                     if (selectedItem) {
451                         // Get selected item value
452                         var attribute = selectedItem.get('Name');
453 
454                         // Remove selected
455                         attributeStore.remove(selectedItem);
456 
457                         // Add to our removed attributes hash
458                         if (id) {
459                             RemovedAttributes.push(attribute);
460                         }
461                     } else {
462                         wispUserFormWindow.getEl().mask();
463 
464                         // Display error
465                         Ext.Msg.show({
466                             title: "Nothing selected",
467                             msg: "No attribute selected",
468                             icon: Ext.MessageBox.ERROR,
469                             buttons: Ext.Msg.CANCEL,
470                             modal: false,
471                             fn: function() {
472                                 wispUserFormWindow.getEl().unmask();
473                             }
474                         });
475                     }
476                 }
477             }
هل كانت مفيدة؟

المحلول

وهذه هي الطريقة التي يعمل store.getModifiedRecords (). يتم تخزين سجلات السجلات المعدلة في مجموعة تسمى تعديل في كائن مخزن. عند إزالة عنصر من مخزن لا يتم إزالته افتراضيا.

وهنا هو إزالة الفعلية () من متجر

remove : function(record){
    var index = this.data.indexOf(record);
    this.data.removeAt(index);
    if(this.pruneModifiedRecords){
        this.modified.remove(record);
    }
    if(this.snapshot){
        this.snapshot.remove(record);
    }
    this.fireEvent("remove", this, record, index);
}

وهذا يعني أن تتم إزالة عنصر من القائمة المعدلة فقط إذا قمت بتحديد قيمة الخيار pruneModifiedRecords على النحو الصحيح. هذه القيمة هي كاذبة افتراضيا كما جاء في API المتجر.

إذا كنت ترغب في البند المضافة حديثا إلى إزالتها من القائمة المعدلة لديك لتعيين قيمة pruneModifiedRecords على النحو الصحيح عند إنشاء مخزن مثال:

var stote = new Ext.data.SimpleStore({
    fields: [],
    data: [],
    pruneModifiedRecords: true
})

نصائح أخرى

store.load(); 
//remove function will delete specific record.
store.remove(store.findRecord("item_id","1"));
store.sync();

وأعتقد أن الرابط التالي يمكن أن تساعدك مع طريقة سهلة كيفية التعامل مع متجر

<وأ href = "http://www.aswedo.net/sencha-touch/sencha-touch-adding-records-reading-data-and-deleting-records-to-store/" يختلط = "نوفولو" > http://www.aswedo.net/sencha-touch/sencha-touch-adding-records-reading-data-and-deleting-records-to-store/

ومن على قمة رأسي، وأنا لا يمكن أن نرى لماذا الشفرة سوف تعمل بهذه الطريقة، كما يظهر أن يكون صحيحا. هل تستخدم الحرائق لتعيين نقطة توقف وخطوة من خلال هذه العملية؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top