2016-04-20 8 views
0

Ich habe diesen Code:ExtJS: 2 Ajax-Speicher, 1 mit einer zusätzlichen Reihe

Ext.define('storeBusiness',{ 
    extend: 'Ext.data.Store', 
    autoLoad: true, 
    autoSync: true, 
    model: 'Business', 
    proxy: { 
     type: 'ajax', 
     api: { 
      read: '../crud/ler_filter.php?db='+database+'&tbl=mercados', 
      create: '../crud/criar.php?db='+database+'&tbl=mercados', 
      update: '../crud/update.php?db='+database+'&tbl=mercados', 
      destroy: '../crud/apagar.php?db='+database+'&tbl=mercados' 
     }, 
     reader: { 
      type: 'json', 
      root: 'rows' 
     }, 
     writer: { 
      type:'json' 
     } 
    } 
}); 

var storeBusinessCombo = Ext.create('storeBusiness'); 

var storeBusiness = Ext.create('storeBusiness'); 

storeBusiness.add({id: 0, business: "All"}); 

Ich habe 2 Gitter. One hat storeBusiness und die andere hat storeProducts.
Die Art der Arbeit ist, wenn ich auf das Geschäftsraster klicke, filtert das Produkt-Raster, so dass es die Produkte dieses Geschäfts zeigt. Auf dem Geschäftsraster hat es die storeBusiness, die es die Datensätze aus einer Datenbank abruft. Ich möchte alle Geschäfte aus der Datenbank holen und einen weiteren Datensatz (mit dem Namen "Alle") hinzufügen, ohne ihn in die Datenbank zu schreiben.
Ich möchte nicht "Alle" zur Datenbank hinzufügen, weil im Grid des Produkts ich eine Combobox haben möchte, die alle Geschäfte (storeBusinessCombo) ohne den Datensatz "All" hat.
Hat jemand eine Idee, wie ich das machen kann?
(oberhalb der Code tut, was ich nicht will, storeBusiness zeigt alle Geschäfte ohne die ‚Alle‘ im Netz)

Wichtig: Dies funktioniert, wenn die Ext.define (‚storeBusiness‘, hat einen Proxy, der vom Typ: ‚Gedächtnis‘

+0

Fügen Sie den Datensatz hinzu, nachdem der Ladevorgang abgeschlossen ist. – JChap

+0

Diese Seite hat es für mich http://StackOverflow.com/Questions/12408952/Extjs-4-1-how-to-combine-Local-Data-with-ajax-loaded-Data-in-a-single-store – alexandre1985

Antwort

0

dies zu beheben ich getan habe:

  1. Setzen Sie den Ext.define ('storeBusiness', {-autoLoad: false,
  2. diesen Code Put:

    var storeBusinessCombo = Ext.create('storeBusiness', {autoLoad: true}); 
    
    var storeBusiness = Ext.create('storeBusiness'); 
    
    storeBusiness.on('beforeload', function(){ 
        storeBusiness.loadData([{id: 0, business: "All"}]); 
    } 
    

    Und Sie sollten

    storeBusiness.load({addRecords: true}); 
    
    0 setzen

    wenn Sie storeBusiness laden möchten.

0

Zwei Ansätze in den Sinn kommen:

  1. Fügen Sie das „alle“ record in den Laden nach Last und werden nicht synchronisiert, so dass die Rekord nicht an den Server gesendet.
  2. Verwenden Sie den Speicherproxy, rufen Sie die Geschäftsdatensätze über die Ajax-Anforderung ab und weisen Sie sie dem Geschäft über seine Datenkonfiguration zu.
+0

Danke. Ich bin am zweiten Ansatz interessiert. Ich weiß, wie man einen Speicher-Proxy-Speicher erstellt, aber wie ordne ich die abgerufenen Datensätze diesem Speicher zu? – alexandre1985

+0

Ich habe ein Problem mit der Ajax-Anfrage, um das gesamte Geschäft aus der Datenbank zu bekommen. Wie kann ich alle Datensätze in eine Variable umwandeln? – alexandre1985

+0

Ich brauche nicht mehr Hilfe, danke. Diese Seite hat es für mich getan :) http://stackoverflow.com/questions/12408952/extjs-4-1-how-to-combine-local-data-with-ajax-loaded-data-in-a-single- Geschäft – alexandre1985