2012-11-15 21 views
5

प्रस्तुत करने के बाद सक्षम कॉलमहाइड संपत्ति बदलें कृपया मदद करें! मैं ExtJs 4.1 ग्रिड पैनल का उपयोग कर रहा हूँ।Extjs ग्रिड पैनल -

मैं प्रतिपादन के बाद ग्रिड सक्षम कॉलमहाइड संपत्ति को बदलने का एक तरीका ढूंढ रहा हूं। मैं मामूली परिवर्तनों के साथ कुछ स्क्रीनों में एक ही ग्रिड का पुन: उपयोग करता हूं, मुख्य रूप से कुछ स्तंभों को छुपाता हूं।

उन स्क्रीन मैं केवल स्तंभ hideable तो मैं पूरी तरह से स्तंभ शीर्ष लेख मेनू से विकल्प निकालना चाहते हैं नहीं होना चाहिए के साथ छोड़ दिया हूँ में से एक में, लेकिन यह बहाल जब मैं अन्य स्क्रीन से एक के लिए मिलता है।

कोई भी विचार?

उत्तर

1

ऐसा लगता है कि ऐसा करने का कोई स्पष्ट तरीका नहीं है, लेकिन मुझे headerCt पर एक हैक - enableColumnHide बदलें और हर बार जब आप उस मान को बदलते हैं तो हेडर मेनू को नष्ट कर दें। उदाहरण कोड:

var checkbox = new Ext.form.field.Checkbox({ 
    renderTo: 'checkbox', 
    boxLabel: 'enableColumnHide', 
    checked: true, 
    handler: function(sender, checked) { 
     Ext.each(grid.columns, function(c){ 
      c.hideable = checked; 
     }); 
    } 
}); 

कार्य नमूना enableColumnHide साथ: http://jsfiddle.net/M3Aqq/5/

कार्य नमूना hideable साथ: http://jsfiddle.net/M3Aqq/9/

+0

दिलचस्प (बस "कॉलम" सबमेनू जो केवल एक मेनू आइटम ही है छिपाने) ... चाहेंगे स्तंभों पर hideable संपत्ति के लिए भी इस काम करता है? – danfromisrael

+0

छिपाने योग्य के साथ मेनू को नष्ट करने की कोई आवश्यकता नहीं है। मैंने अपना जवाब अपडेट कर लिया है। – Krzysztof

+0

यह awesomem, 10x लोलो है! क्या इसका कोई तरीका है ताकि कॉलम जो छिपे हुए न हों, "कॉलम" चेकबॉक्स सूची पर दिखाई न दें? मैं चाहता हूं कि उपयोगकर्ता केवल उस कॉलम को देखे जो वह वास्तव में उस सूची में छिपा सकता है –

2

मैं भी एक था

var checkbox = new Ext.form.field.Checkbox({ 
    renderTo: 'checkbox', 
    boxLabel: 'enableColumnHide', 
    checked: true, 
    handler: function(sender, checked) { 
     var h = grid.headerCt; 
     h.enableColumnHide = checked; 
     if (h.menu) { 
      h.menu.destroy(); 
      h.menu = null; 
     } 
    } 
}); 

यह भी स्तंभों पर hideable का उपयोग करके posiible है पहले इसी तरह की समस्या। "Hideable" के अनुसार मेनू पर

Extjs Grid panel - Hide a column with hideable=false

मूल रूप से मैं ग्रिड हैडर मेनू के "beforeshow" इस घटना के लिए पंजीकृत कर लिया है और छिपाने के प्रत्येक hideable स्तंभ चेकबॉक्स आइटम: तुम मेरे वैकल्पिक हल के लिए यहाँ की जाँच कर सकते प्रत्येक कॉलम पर प्रस्ताव।

आप "enableColumnHide" के साथ भी ऐसा कर सकते हैं