2013-06-28 8 views
7

Scenarioein Feld in einem Datensatz in dyanamically extjs

aktualisieren mag ich die Spaltendaten von bestimmten Datensatz in Raster mit Speichern mit statischen Daten aktualisieren. Hier ist mein store:

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

Mein data.json

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

Was ich den Datensatz zu aktualisieren tue:

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(); 

MEIN PROBLEM

Ich bekomme den Datensatz über hier aktualisiert.Es wird nicht in meinem Gitter Panel.The Gitter verwendet den gleichen alten Speicher (statisch) .Ist das Problem der statischen Daten? Oder verpasse ich etwas oder gehe irgendwo falsch? Bitte helfen Sie mir mit diesem Problem. Vielen Dank.

MY EDIT

Ich tryng die Spalte zu Farbcode auf der Grundlage der status.But hier bin ich immer bekommen die status = „aktiv“ obwohl ich den Laden bin zu aktualisieren.

Was ich versuche, in meinem Gitter

{ 
    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 
    }] 
} 

Antwort

9

Eine drastische Möglichkeit ist, Ihr Grid neu zu konfigurieren. Das mag nicht deine endgültige Lösung sein, aber vielleicht lernst du auch, was schief läuft.

Anruf

grid.reconfigure(store) 

statt

grid.getView().refresh(); 

nach den Aufzeichnungen zu ändern. Sie können auch eine einzelne store.commitChanges() verwenden, anstatt eine record.commit() für jeden einzelnen Datensatz zu verwenden.

+1

Danke Christoph. Ich löste es mit grid.bindStore (MyUpdatedStore); Aber Ihre Lösung auch rocks.Thanks viel – Dev

+0

Verwendet grid.reconfigure (Geschäft) - arbeitete wie ein Charme! Vielen Dank! –

1

Haben Sie Ihr Geschäft commiting versucht zu tun und Nachladen es?

Versuchen Sie diesen Weg.

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

Thnks Shankar.Bitte schauen Sie in meine Edit.Ich bekomme keine Werte des Ladens in meinem Raster wider. – Dev

7

Vielleicht ist es nur ein Tippfehler, den Sie val in Ihrem Zustand zuweisen. Probieren Sie Folgendes (= bis ==):

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

Danke.Aber ich bekomme immer noch den Status als inactive.Ich bekomme immer noch das val als inaktiv in meinem column renderer.It ist der alte Speicher Werte.Thanks wieder. – Dev

0

ich es mit aufgelöste

grid.bindStore(myupdatedstore); 

Wie @ Christoph angegeben

grid.reconfigure(store) 

funktioniert auch gut.