extjs - नए रिकॉर्ड के साथ Store.sync()प्रतिक्रिया में सर्वर द्वारा निर्मित फ़ील्ड आयात नहीं करता है




extjs4 extjs4.1 (2)

मेरे पास पंक्ति संपादन के साथ एक ग्रिड है। जब मैं एक पंक्ति जोड़ता हूं और store store.sync () करता हूं, तो सर्वर उस रिकॉर्ड पर कुछ फ़ील्ड उत्पन्न करता है, और प्रतिक्रिया में पूर्ण रिकॉर्ड जानकारी देता है। हालांकि, एक्स्टजेएस आईडी को छोड़कर रिकॉर्ड की अपनी प्रतिलिपि अद्यतन नहीं करता है क्या ऐसा करने का एक तरीका है, या मुझे कस्टम कोड लिखने की आवश्यकता है?

यह ग्रिड नियंत्रक का एक अंश है:

doneEdit: function (editor, e, eOpts) {

    var me = this;

    //
    // Set up loading mask on grid during update (if record changed and is valid)
    //
    if (e.record.dirty && e.record.isValid()) {
        e.grid.showUpdatingMask();

        e.store.sync({
            success: me.onSaveSuccess,
            failure: me.onSaveFailure,
            scope: me
        });
    }
    else {
        me.cancelEdit(editor, e, eOpts);
    }
},

//
// onSaveSuccess() is only used for row editor grids
//
onSaveSuccess: function (batch, options) {

    var me = this,
        grid = me.getGrid();

    grid.getStore().filter([]); // re-run whatever filters already exist, and sort.

    grid.hideMask();

    // update read-only active store if specified by sub-class
    if(me.activeStore) {
        // $TODO: handle load failure
        me.activeStore.load();
    }
},

Answers

मुझे एक ही समस्या थी (एक्सटेंशन 4.2.1)। इसका कारण यह था कि मैं पाठक डिफ़ॉल्ट पर idProperty सेट करना भूल गया "id" है, मेरा "_id" है एक्स्ट रिकॉर्ड को अपडेट करने में चुपचाप विफल रहा क्योंकि यह मिलान आईडी पहचान नहीं पाया था अब यह एक जादू की तरह काम करता है

इसलिए सुनिश्चित करें कि प्रतिक्रिया आपके पाठक (रूट, आईडीपॉर्फ़टी, मॉडल परिभाषा, ...) द्वारा अपेक्षित सही प्रारूप में है


मुझे सच में यकीन नहीं है कि क्या यह सभी AJAX अनुरोधों को पकड़ लेगा लेकिन यह मानते हुए कि आप सर्वर के साथ सभी संचार के लिए अजाक्सप्रॉक्स का उपयोग कर रहे हैं, इसे काम करना चाहिए: Ext.Ajax सिंगलटन में 'requestexception' ईवेंट को संभालें

Ext.Ajax.on('requestexception', function(conn, response, options, eOpts) {
    //your error handling here
});

मैंने कोशिश नहीं की है लेकिन यदि आप करते हैं, तो क्या आप यहां एक अपडेट पोस्ट कर सकते हैं?