2013-07-22 4 views
5

में ग्रिड में प्रोग्रामेटिक रूप से जोड़े गए रिकॉर्ड के बाद सेल संपादक टॉगल करें मैं एक्स्टजेस 4.2.1 का उपयोग कर रहा हूं और एक काफी सरल सेटअप है: जेएसओएन-आधारित स्टोर और उस स्टोर से पढ़ने वाले ग्रिडपैन। एक ऐड बटन का क्लिक इवेंट नीचे दिए गए फ़ंक्शन पर कॉल करता है।एक्स्टजेस

मेरा लक्ष्य ग्रिड में एक खाली पंक्ति जोड़ना है और तुरंत Ext.grid.plugin.CellEditing प्लगइन का उपयोग करके इसे संपादित करना शुरू करें जो ग्रिडपेनल पर सक्षम है।

var addNewRow = function() { 
    // start add logic 
    var row = { 
    'name': '', 
    'email': '', 
    'description': '' 
    }; 
    store.add(row); 

    // start auto-edit logic 
    var index = store.indexOf(row); // -1 
    var grid = Ext.ComponentQuery.query('gridpanel[itemId=upperPane]')[0]; 
    var plugin = grid.getPlugin('upperPaneEditor'); 
    plugin.startEdit(index, 0); 
}; 

डीबगिंग करते समय, इंडेक्स -1 पर सेट होता है और यह काम नहीं करता है। मैंने प्लगइन का परीक्षण किया .startEdit() की कार्यक्षमता (0, 0) के साथ पहली पंक्ति के पहले कॉलम को संपादित करने के लिए और यह ठीक काम करता है। मैं यह काम करने के लिए प्राप्त करने की कोशिश विभिन्न ईवेंट हैंडलर्स करने के लिए स्वतः संपादित तर्क चलती की कोशिश की:

  • दुकान के add घटना जोड़ने के बाद निकाल दिया और सही सूचकांक को दर्शाती है परन्तु तत्व के लिए gridpanel में अभी तक पेश नहीं किया गया था इसे पकड़ने के लिए प्लगइन।
  • gridpanel के afterrender घटना ऐड
  • gridpanel के add गतिविधि सक्रिय के बाद आग नहीं था, लेकिन केवल एक सेल पर डबल क्लिक करने के बाद इसे मैन्युअल रूप से संपादित करने के लिए। यह अपने आप के साथ एक लूप में भी समाप्त हो गया।

मुझे इस बात पर यकीन नहीं है कि इस बिंदु पर और क्या प्रयास करना है।

उत्तर

1

आपका row मॉडल कॉन्फ़िगरेशन ऑब्जेक्ट है, मॉडल मॉडल नहीं, इसलिए store.indexOf रिटर्न -1।

प्रयास करें:

var inst = store.add(row)[0]; 
... 
var index = store.indexOf(inst); 
+0

बहुत बढ़िया, कि काम किया। धन्यवाद! – anjunatl

संबंधित मुद्दे