ExtJS

2013-06-28 16 views
7

परिदृश्यExtJS

में एक रिकॉर्ड में एक क्षेत्र अपडेट कर रहा है dyanamically मैं स्थिर डेटा के साथ ग्रिड की दुकान होने में विशेष रिकॉर्ड के स्तंभ डेटा अपडेट करना चाहते हैं। यहाँ मेरी दुकान है:

extend : 'Ext.data.Store', 
model : 'MyModel', 
autoLoad:true, 
proxy: { 
    type: 'ajax', 
    url: 'app/data/data.json', 
    reader: { 
     type: 'json', 
     root: 'users' 
    } 
}, 

मेरे data.json

{ 
    'users': [{ 
     QMgrStatus: "active", 
     QMgrName: 'R01QN00_LQYV', 
     ChannelStatus: 'active', 
     ChannelName: 'LQYV.L.CLNT', 
     MxConn: 50 
    }] 
} 

मैं रिकॉर्ड को अपडेट करने क्या कर रहा हूँ:

var grid = Ext.getCmp('MyGrid'); 
var store = Ext.getStore('Mystore'); 
store.each(function(record, idx) { 
    val = record.get('ChannelName'); 
    if (val == "LQYV.L.CLNT") { 
     record.set('ChannelStatus', 'inactive'); 

     record.commit(); 
    } 
}); 
console.log(store); 
grid.getView().refresh(); 

मेरी समस्या

मुझे यहां रिकॉर्ड अपडेट हो रहा है। यह मेरे ग्रिड पैनल में दिखाई नहीं दे रहा है। ग्रिड एक ही पुराने स्टोर (स्थिर) का उपयोग कर रहा है। क्या स्थिर डेटा की समस्या है? या क्या मुझे कुछ याद आ रहा है या कहीं गलत हो रहा है? कृपया इस मुद्दे के साथ मेरी मदद करें। बहुत धन्यवाद।

मेरे संपादन

मैं रंग कोड को status.But के आधार पर यहाँ मैं हमेशा हो रही है स्तंभ tryng हूँ स्थिति = "सक्रिय" भले ही मैं दुकान को अद्यतन करने कर रहा हूँ।

मैं अपने ग्रिड में करने के लिए कोशिश कर रहा हूँ क्या

{ 
    xtype: 'grid', 
    itemId: 'InterfaceQueueGrid', 
    id: 'MyGrid', 
    store: 'Mytore', 
    height: 216, 
    width: 600, 
    columns: [{ 
     text: 'QueueMgr Status', 
     dataIndex: 'QMgrStatus', 
     width: 80 
    }, { 
     text: 'Queue Manager \n Name', 
     dataIndex: 'QMgrName', 
     width: 138 
    }, { 
     text: 'Channel Status', 
     dataIndex: 'ChannelStatus', 
     width: 78, 
     align: 'center', 
     renderer: function(value, meta, record) { 
      var val = record.get('ChannelStatus'); 
      console.log(val); // Here I am always getting status="active". 
      if (val == 'inactive') { 
       return '<img src="redIcon.png"/>'; 
      } else if (val == 'active') { 
       return '<img src="greenIcon.png"/>'; 
      } 
     } 
    }, { 
     text: 'Channel Name', 
     align: 'center', 
     dataIndex: 'ChannelName', 
     width: 80 
    } { 
     text: 'Max Connections', 
     align: 'center', 
     dataIndex: 'MxConn', 
     width: 80 
    }] 
} 

उत्तर

9

एक कठोर तरीका है अपने ग्रिड को पुन: कॉन्फ़िगर करने के लिए है। यह आपका अंतिम समाधान नहीं हो सकता है, लेकिन हो सकता है कि आपको पता चल जाए कि क्या गलत हो रहा है।

कॉल

grid.reconfigure(store) 

बजाय रिकॉर्ड बदलने के बाद

grid.getView().refresh(); 

की। आप प्रत्येक एकल रिकॉर्ड पर record.commit() का उपयोग करने के बजाय एकल store.commitChanges() का भी उपयोग कर सकते हैं।

+1

धन्यवाद क्रिस्टोफ। मैंने इसे grid.bindStore (MyUpdatedStore) का उपयोग करके हल किया; लेकिन आपका समाधान भी चट्टानों। बहुत धन्यवाद – Dev

+0

प्रयुक्त grid.reconfigure (स्टोर) - एक आकर्षण की तरह काम किया! धन्यवाद! –

1

आप की कोशिश की अपनी दुकान और यह पुन: लोड करने से है?

इस तरह से प्रयास करें।

yourstorename.commitChanges(); 
yourstorename.reload(); 
+0

Thnks शंकर। कृपया मेरे संपादन में देखें। मुझे अपने ग्रिड में दिखाई देने वाले स्टोर के मूल्य नहीं मिल रहे हैं। – Dev

7

शायद यह सिर्फ एक टाइपो है, आप अपनी स्थिति में वैल असाइन करते हैं। (= == करने के लिए) इस प्रयास करें:

var grid = Ext.getCmp('MyGrid'); 
var store = Ext.getStore('Mystore'); 
store.each(function(record,idx){ 
     val = record.get('ChannelName'); 
     if(val == "LQYV.L.CLNT"){ 
     record.set('ChannelStatus','active'); 
     } 
     else { 
     record.set('ChannelStatus','inactive'); 
     } 
     record.commit(); 
}); 
console.log(store); 
grid.getView().refresh(); 
+0

धन्यवाद। लेकिन फिर भी मुझे स्थिति निष्क्रिय के रूप में मिल रही है। मुझे अभी भी मेरे ग्रिड के कॉलम रेंडरर में निष्क्रिय के रूप में वैल मिल रहा है। यह पुराने स्टोर मूल्य ले रहा है। धन्यवाद। – Dev

0

मैं

grid.bindStore(myupdatedstore); 

का उपयोग कर इसका समाधान नहीं होता @Christoph

grid.reconfigure(store) 

द्वारा कहा गया है ठीक रूप में अच्छी तरह से काम करता है।