2012-05-04 18 views
7

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

धन्यवाद

उत्तर

4

आप कुछ इस तरह का मतलब है:)

 
... 
columns: [{ 
    header: 'Name', 
    dataIndex: 'Name', 
    sortable: true, 
    getSortParam: function() { 
     return 'SortOrder'; 
    } 
... 
}] 
... 

बजाय doSort (अधिभावी की तुम सिर्फ ओवरराइड कर सकते हैं:

... 
columns: [{ 
    header: 'Name', 
    dataIndex: 'Name', 
    sortable: true, 
    doSort: function(state){ 
     var ds = this.up('tablepanel').store; 
     ds.sort({ 
      property: 'SortOrder', 
      direction: state 
     }); 
    } 
    ....  
}] 
+0

धन्यवाद .... आश्चर्य है कि उन्होंने Ext.grid.column.Column के दस्तावेज़ में "doSort" क्यों नहीं रखा। आपके लिए +1 – T1000

+1

ध्यान रखें, Ext.grid.column.Column.doSort() एक निजी विधि है जो आंतरिक प्रसंस्करण के लिए उपयोग की जाती है और इस तरह आमतौर पर हमारे द्वारा उपयोग के लिए अनुशंसित नहीं किया जाता है। इस वजह से, दस्तावेज़ीकरण में यह तब तक दिखाई नहीं देता है जब तक कि आप इसे विशेष रूप से खोज न करें या निजी कार्यों को देखने में सक्षम न हों। – Yetti

19

भी एक छोटे से सरल समाधान नहीं है getSortParam() विधि (जिसे doSort() द्वारा उपयोग किया जाता है)।

+0

पुष्टि की है कि यह 4.2.3 – Dave

+0

के साथ काम करता है यह स्वीकार्य उत्तर होना चाहिए था। – bits

+0

इसने मेरे लिए भी इस मुद्दे को हल किया, लेकिन आपके अन्य संदर्भित फ़ील्ड (इस मामले में 'सॉर्टऑर्डर' का अपना कॉलम है, आपको इसे एक अलग डेटा इंडेक्स देने की आवश्यकता हो सकती है और इसके 'getSortParam' फ़ंक्शन को ओवरराइड भी कर सकता है। वास्तव में कोई निश्चित नहीं है कि क्यों ... – Sash

0

हेडर क्लिक पर ऐसा करने का एक और तरीका।

columns: [ 
    { 
     header: 'Name', 
     dataIndex: 'Name', 
     listeners: { 
      headerclick: function() { 
       var store = this.up('grid').getStore(); 
       store.sort({ 
         property: 'SortOrder', 
         direction: this.sortState 
        }); 
      } 
     } 
    } 
] 
संबंधित मुद्दे