2015-11-27 2 views
0

Voici le code dans lequel j'essaie de charger des enregistrements à l'aide de JSon Reader dans le magasin. Je suis incapable de voir ceci sur la grille. Pouvez-vous s'il vous plaît me signaler ce qui me manque car je ne veux pas utiliser proxy/url pour JSon.EXTJS Comment utiliser JSon Reader sans proxy

var itemsPerPage = 10; 
Ext.Loader.setConfig({enabled: true}); 
Ext.require([ 
    'Ext.grid.*', 
    'Ext.data.*', 
    'Ext.util.*', 
    'Ext.toolbar.Paging' 
]); 

Ext.define('Assemble', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'lot_no', type: "string"} 
    ], 
    idProperty: 'lot_no' 
}); 

Ext.onReady(function() { 
    Ext.QuickTips.init(); 

    var jsonString = '{"result":[{"lot_no":"MT6261"},{"lot_no":"MT6262"},{"lot_no":"MT6263"}]}'; 

    // create the data store 
    var store = Ext.create('Ext.data.Store', { 
     pageSize: itemsPerPage, 
     proxy:{ 
      type: 'ajax', 
      reader: { 
       type: 'json', 
       root: 'result', 
       model: Assemble 
      } 
     } 
    }); 
    store.loadData(Ext.decode(jsonString)); 



    console.log(store); 

    var pagingToolbar = Ext.create('Ext.PagingToolbar',{ 
     pageSize: itemsPerPage, 
     store: store, 
     displayInfo: true, 
     displayMsg: ' {0}-{1},{2}', 
     emptyMsg: "empty." 
    }); 

    // create the Grid 
    var grid = Ext.create('Ext.grid.Panel', { 
     store: store, 
     disableSelection: true, 
     loadMask: true, 
     columns: [ 
      { 
       text  : 'LOT_NO', 
       flex  : 1, 
       sortable : true, 
       dataIndex: 'lot_no' 
      } 
     ], 
    bbar : pagingToolbar, 
    renderTo: 'grid', 
    viewConfig: { 
     stripeRows: true, 
     enableTextSelection: true 
    } 
    }); 

    store.loadPage(1); 
}); 
+0

pouvez-vous modifier votre JsonString ?? –

+0

le modèle doit être hors de votre proxy – So4ne

Répondre

0

Le proxy doit être utilisé avec url. Donc, vous ne pouvez pas utiliser le proxy comme ça. J'ai enlevé le proxy, mis le modèle en magasin et vous devez charger des objets dans le magasin, mais dans votre cas contenait rootProperty ('result', j'obtiens seulement les objets principaux ou vous pouvez enlever le 'résultat' du jsonString). Ensuite, ça a marché. Chck ce violon:

https://fiddle.sencha.com/#fiddle/11or

var jsonString = '{"result":[{"lot_no":"MT6261"},{"lot_no":"MT6262"},{"lot_no":"MT6263"}]}'; 

// create the data store 
var store = Ext.create('Ext.data.Store', { 
    pageSize: itemsPerPage, 
    model: 'Assemble' 
}); 
store.loadData(Ext.decode(jsonString).result); 
0

Pourquoi êtes-vous même à l'aide d'un lecteur? Vos données sont donc décoder juste locale la chaîne et passer ce que vous voulez:

https://fiddle.sencha.com/#fiddle/11qc

En outre, vos données sont locales donc pas besoin d'une barre d'outils d'échange. Dans Ext JS 5+, la grille utilisera le rendu bufférisé (si la grille a une taille définie à partir des configurations hauteur/largeur ou d'une disposition parente), le chargement de toutes les données dans le magasin n'affectera pas les performances (autres que la création des enregistrements) . La grille rendra seulement ce qui est visible plus quelques uns de chaque côté.