Extjs - إزالة المضافة حديثا العنصر المحدد من متجر
-
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/
ومن على قمة رأسي، وأنا لا يمكن أن نرى لماذا الشفرة سوف تعمل بهذه الطريقة، كما يظهر أن يكون صحيحا. هل تستخدم الحرائق لتعيين نقطة توقف وخطوة من خلال هذه العملية؟