ExtJs Gridpanel स्टोर ताज़ा करें




(7)

मैं डेटाबेस से ExtJs Gridpanel बाध्यकारी हूँ और मेरे ग्रिडपैनल के नीचे "हटाएं" बटन जोड़ें। डिलीट बटन हैंडलर का उपयोग करके, मैंने ग्रिडपेनल पर चयनित रिकॉर्ड हटा दिया है। लेकिन, हटाने के बाद, ग्रिड रीफ्रेश नहीं होता है (इसे डेटाबेस से हटा दिया जाता है लेकिन रीफ्रेश की वजह से ग्रिड पर दिखाया जाता है)।

हैंडलर हटाने के बाद मैं ग्रिड रीफ्रेश कैसे कर सकता हूं?


3.4 में एक और दृष्टिकोण (यह नहीं पता कि यह उचित है या नहीं): आप इस तरह एक डिलीट हैंडलर प्राप्त कर सकते हैं, मानते हैं कि प्रत्येक पंक्ति में 'डिलीट' बटन होता है।

handler: function(grid, rowIndex, colIndex) {
    var rec = grid.getStore().getAt(rowIndex);
    var id = rec.get('id');
    // some DELETE/GET ajax callback here...
    // pass in 'id' var or some key
    // inside success
    grid.getStore().removeAt(rowIndex);
}

Model.destroy की तुलना में store.remove का उपयोग करना बेहतर है। उस बटन के लिए हैंडलर क्लिक करें इस तरह दिख सकता है:

destroy: function(button) {
    var grid = button.up('grid');
    var store = grid.getStore();
    var selected = grid.getSelectionModel().getSelection();

    if (selected && selected.length==1) {
        store.remove(selected);
    }
}

ग्रिड रीफ्रेश करने के लिए डीएस पुनः लोड करें।

ds.reload();

दशा और एमएमटी समाधान का संयोजन:

  Ext.getCmp('yourGridId').getView().ds.reload();

मुझे एक समान समस्या थी। मुझे बस इतना करना था कि store.load(); टाइप करें store.load(); हटाए हैंडलर में। बाद में grid.getView().refresh(); टाइप करने की कोई आवश्यकता नहीं थी grid.getView().refresh();

इसके बजाय आप डिलीट हैंडलर में store.remove(record) भी टाइप कर सकते हैं; - यह सुनिश्चित करता है कि हटाए गए रिकॉर्ड अब ग्रिड पर नहीं दिखाए जाते हैं।


रीफ्रेश ग्रिड स्टोर

Ext.getCmp('GridId').getStore().reload();

यह ग्रिड स्टोर को फिर से लोड करेगा और नया डेटा प्राप्त करेगा।


grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();