2012-09-27 15 views
8

मैंने ExtJs का उपयोग करके एक स्टोर बनाया और मैं स्टोर के मूल्य को कॉम्बोबॉक्स में लोड करना चाहता हूं। लेकिन मूल्यों को लोड करने से पहले मुझे किसी अन्य कॉम्बोबॉक्स में चयनित मान के आधार पर कुछ डेटा फ़िल्टर करने की आवश्यकता है।ExtJs स्टोर में फ़िल्टर का उपयोग कैसे करें?

तो उस उद्देश्य के लिए मुझे लगता है कि मुझे स्टोर पर फ़िल्टर लागू करने की आवश्यकता है, कृपया कोई भी शरीर मेरी मदद कर सकता है कि मैं यह कैसे कर सकता हूं।

मॉडल: -

Ext.define('City', { 
extend: 'Ext.data.Model', 
fields: [ 
     { name: 'StateId', type: 'string' }, 
     { name: 'City', type: 'string' }, 
]}); 

स्टोर: -

var cityStore = Ext.create('Ext.data.Store', { 
model: 'City', 
data : [ 
    { StateId: '1', City: 'Bangalore'}, 
    { StateId: '1', City: 'Mysore'}, 
    { StateId: '1', City: 'Dharwad'}, 
    { StateId: '2', City: 'Mumbai'}, 
    { StateId: '2', City: 'Pune'}, 
    { StateId: '2', City: 'Nagpur'} 
    ]}); 

अब मैं Combobox में लोड करने के लिए इस cityStore उपयोग कर रहा हूँ। लेकिन लोड से पहले मैं चाहता हूँ अगर stateId 1 तो है ही 3 रिकॉर्ड (बंगलौर, मैसूर, धारवाड़) बता गया में लोड कर रहे हैं और अगर stateId है 2 तो अन्य 3 रिकॉर्ड बता गया में लोड कर रहे हैं। मैं इसे कैसे प्राप्त कर सकता हूं।

+0

आप यह जांच सकते हैं: JSFiddle पर एक काम करने वाले नमूने के साथ इसका एक अच्छा छोटा ट्यूटोरियल है। http://atechiediary.blogspot.com/2013/06/extjs-how-to-filter-data-of-store-in.html – DarkKnightFan

उत्तर

18

Ext.data.Store filter विधि दस्तावेज़ के अनुसार:

var stateId = 1; // your value 
cityStore.clearFilter(true); 
cityStore.filter('StateId', stateId); 

अद्यतन

मुझे लगता है कि अपने आप में ComboBox फिल्टर डेटा मिल गया है और वहाँ यह व्यवहार है बदलने के लिए कोई अवसर नहीं है। लेकिन मैं इस समस्या के दो समाधान देखें:

  1. फ़िल्टर डेटा मैन्युअल (Ext.util.MixedCollection filter देखें) और अपने स्टोर में इसे लोड

  2. अक्षम दुकान के clearFilter और filter विधियों (Ext.data.Store load देखें) और का उपयोग स्वयं के cityFilter:

    Ext.define('CityStore', { 
        extend: 'Ext.data.Store', 
        filter: Ext.emptyFn, 
        clearFilter: Ext.emptyFn, 
        cityFilter: function (stateId) { 
         Ext.data.Store.prototype.clearFilter.call(this); 
         Ext.data.Store.prototype.filter.call(this, 'StateId', stateId); 
        } 
    }); 
    

    फिर cityFilter() विधि का उपयोग करें।

+0

लेकिन यह काम नहीं कर रहा है। – Popeye

+0

क्या आप एक्स्टजेस संस्करण का उपयोग करते हैं? –

+0

मैं एक्सएस जेएस 4.0.7 – Popeye

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