2011-07-11 12 views
6

ग्रिडपैनल में, हम सभी जानते हैं कि हम अनुकूलित सेल के लिए कॉलम कॉन्फ़िगरेशन में renderer निर्दिष्ट कर सकते हैं। अब यह विशेष मामला है जिसे मुझे एक सेल में खींचा जाने के लिए एक अनुकूलित दृश्य प्रगति पट्टी (कैनवास) बनाने की आवश्यकता है, मेरा प्रश्न सेल के el कैसे प्राप्त करें?एक्सटीजेएस 4 ग्रिड व्यू - सेल के टीडी या डीवी कैसे प्राप्त करें?

रेंडरर कॉलबैक में, उपलब्ध मूल्यों value, metadata, record, rowIndex, columnIndex, store, और view हैं। मैंने view.getNode या view.getCell को अभी तक कोई भाग्य नहीं दिया है।

अग्रिम धन्यवाद!

/लियोनेल

संपादित

कुछ आगे खुदाई करने के बाद, मुझे एहसास हुआ कि मेरी नोड्स समय रेंडरर कहा जाता है से तैयार नहीं वास्तव में कर रहे हैं, वह है, view.getNode और view.getCell वास्तव में काम कर , लेकिन देरी हुई (यह हर समय शून्य वापस आती है)

setTimeout का उपयोग करने के लिए एक वर्कअराउंड है और नोड्स तैयार होने के बाद तत्व प्रस्तुत करता है। यह निश्चित रूप से मामले से निपटने का सबसे अच्छा तरीका नहीं है। कोई सुझाव वैसे भी स्वागत कर रहे हैं :)

/लियोनेल

+0

मेरा मानना ​​है कि इस मामले से निपटने का एक तरीका है। लेकिन अगर यह सही तरीका नहीं है, तो भी किसी भी सुझाव का स्वागत है। –

+0

सीएसएस वर्ग – atian25

+0

द्वारा डोम क्वेरी का उपयोग करने का प्रयास करें कोई क्लीनर तरीका नहीं है? मैंने सोचा कि वे कहीं भी 'व्यू' –

उत्तर

7

बाहर कर देता है कि इस सवाल का जवाब setTimeout उपयोग करने के लिए कुछ देरी अनुकरण करने के लिए इतना नोड्स कुछ विलंब के बाद सही ढंग से जोड़ा जा सकता है।

यह मेरा renderer

renderer = function (v, meta, rec, r, c, store, view) { 

    setTimeout(function() { 
     var row = view.getNode(rec); 

     //Capturing the el (I need the div to do the trick) 
     var el = Ext.fly(Ext.fly(row).query('.x-grid-cell')[c]).down('div'); 

     //All other codes to build the progress bar 
    }, 50); 
}; 

बदसूरत है, लेकिन यह काम करता है। यदि कोई अन्य उत्तर नहीं है, तो मैं इसे अगले दो दिनों में वैध उत्तर के रूप में स्वीकार करूंगा।

चीयर्स

/लियोनेल

1

मैं एक से थोड़ा neater समाधान है, एक setTimeout कॉल के लिए जरूरत से परहेज।

मूल रूप से मेरी renderer सेल है कि मैं में कस्टम सामग्री चाहते करने के लिए एक class कहते हैं, तो मैं listeners के संयोजन का उपयोग करने के बाद ग्रिड पेज पर मौजूद है कि सेल करने के लिए कस्टम सामग्री प्रस्तुत करने के लिए।

renderer: function (value, metaData, record) { 
    metaData.tdCls = metaData.tdCls + ' customContentCell'; 
    return ''; 
} 

ग्रिड पर मैं एक afterrender श्रोता कि बारी में gridview करने के लिए एक refresh श्रोता कहते हैं जोड़ें। मुझे व्यूअर या कुछ अन्य घटनाओं का उपयोग करना पसंद होता था, लेकिन यह 4.0.2 ए का उपयोग कर रहे एक्सटी के संस्करण में काम नहीं करता है।

listeners: { 
    afterrender: function (grid) { 
     var view = this.getView(); 
     if (view) 
      view.on('refresh', gridRenderCustomContent, this); 
    } 
} 

कि refresh समारोह में मैं तो सभी रिकॉर्ड के माध्यम से लूप और सेल में सामग्री बाहर प्रस्तुत करना। निम्नलिखित की तरह कुछ, जो बस सेल में एक एक्सटी कंटेनर जोड़ता है, को आधार के रूप में काम करना चाहिए।

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