PDA

View Full Version : Grid Reload oder Refresh



DetBerlin
7 Oct 2013, 5:49 AM
hi Leute,

>:)>:)>:)

ich stehe mal wieder vor einem Problem....

meine Grid wird mit Start-Daten befüllt und angezeigt.
soweit so gut....

Der Einsprung Store funktioniert also.

Nun mein Gedanke wie ich mir die weiteren funktionen vorstelle.

die Grid soll mit anderen Daten befüllt werden indem ich auf den entsprechenden Button klicke.
Mein plan ist eine Grid für mehrere Stores.

hatt jemand nen lösungsansatz für mich?
aber ohne das ich die Grid per destroy wieder neu einlesen muss.

gruß
detberlin

Orcyano
7 Oct 2013, 6:24 AM
Also ich weiß das ist kein besonders guter Stil, aber es funktioniert:


var cmp = Ext.getCmp(...); // oder eine bereits vorhandene Instanz
cmp.store = Ext.create('Ext.data.Store',{...}); // bzw beliebiger existierender Store
cmp.getStore().load();

DetBerlin
7 Oct 2013, 7:56 AM
Danke für den vorschlag aber es funktioniert nicht bei mir....
habe jetzt so ziemlich alles ausprobiert.

:-?

Orcyano
7 Oct 2013, 8:49 AM
Ok, ich hab mal nochmal nachgeguckt, ich war mir ziemlich sicher, dass ich es so gemacht hab, aber nein, das war für Comboboxen ;)
Hier ein Fetzen Code, der zumindest laut sencha-fiddle einwandfrei funktioniert!


Ext.onReady(function() { // create store 1
var data1 = {
gridData: [{
col1: 'data1-col1-row1',
col2: 'data1-col2-row1',
col3: 'data1-col3-row1',
col4: 'data1-col4-row1',
}, {
col1: 'data1-col1-row2',
col2: 'data1-col2-row2',
col3: 'data1-col3-row2',
col4: 'data1-col4-row2',
}]
};
var store1 = Ext.create('Ext.data.Store', {
fields: ['col1', 'col2', 'col3', 'col4'],
data: data1,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'gridData'
}
}
});


// create store 2
var data2 = {
gridData: [{
col1: 'data2-col1-row1',
col2: 'data2-col2-row1',
col3: 'data2-col3-row1',
col4: 'data2-col4-row1',
}, {
col1: 'data2-col1-row2',
col2: 'data2-col2-row2',
col3: 'data2-col3-row2',
col4: 'data2-col4-row2',
}]
};
var store2 = Ext.create('Ext.data.Store', {
fields: ['col1', 'col2', 'col3', 'col4'],
data: data2,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'gridData'
}
}
});




// create grid
var grid = Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
columns: [{
text: 'header1',
dataIndex: 'col1'
}, {
text: 'header2',
dataIndex: 'col2'
}, {
text: 'header3',
dataIndex: 'col3'
}, {
text: 'header4',
dataIndex: 'col4'
}],
store: store1
});


var activeStore = store1;


// create switch button
var button = Ext.create('Ext.button.Button', {
text: 'click to switch store',
renderTo: Ext.getBody(),
handler: function() {
if (activeStore == store1) {
grid.reconfigure(store2);
grid.getStore().load();
activeStore = store2;
} else {
grid.reconfigure(store1);
grid.getStore().load();
activeStore = store1;
}
}
});
});

Einfach unter fiddle . sencha . com eintippen und mal ausprobieren, ich kann leider keine direkten Links angeben, da sonst der Post erst Monate später zugelassen wird -.-

DetBerlin
8 Oct 2013, 12:00 AM
=D>=D>

funktioniert super.....


klasse


big thx

detberlin