2009-11-24 3 views
0

Je tente de remplir une grille à l'aide d'un magasin DirectStore. Aucune donnée n'apparaît dans la grille bien que je puisse voir les données dans Firebug. J'ai même essayé de vider les données dans un DataView pour voir si je suis peut-être en train de tout gâcher dans le GridPanel mais rien n'y est affiché non plus. Essayé en utilisant à la fois les lecteurs JSON et XML en vain.Remplissage de la grille ExtJS à l'aide de DirectJNgine DirectStore

Une idée de ce qui pourrait se passer ici?

Voici le javascript:

var RecordDef = Ext.data.Record.create([ 
    {name: 'ProgramName'} 
]); 

var jsonReader = new Ext.data.JsonReader({ 
    root: 'list', 
    fields: [ 
      {name: 'ProgramName', type: 'string'} 
     ] 
}); 

var xmlReader = new Ext.data.XmlReader({ 
    record: "ProgramName" 
}, RecordDef); 

var mystore = new Ext.data.DirectStore({ 
    autoLoad: true, 
    reader: jsonReader, 
    paramsAsHash: false, 
    storeId:'mystore', 
    directFn: DataAction.getProgramNames 
}); 

var grid = new Ext.grid.GridPanel({ 
    renderTo:'grid', 
    store: mystore, 
    columns: [ 
     {id:'ProgramName', header: 'ProgramName', sortable: true, dataIndex: 'ProgramName'} 
    ], 
    stripeRows: true, 
    autoExpandColumn: 'ProgramName', 
    fitToFrame: true, 
    fitContainer: true, 
    height: 200, 
    title: 'Coolness', 
}); 

Et ce sont les données Je reviens comme on le voit dans Firebug:

{"result": 
    "{\"list\": 
      [{\"ProgramName\":\"Name1\"}, 
      {\"ProgramName\":\"Name2\"}, 
      {\"ProgramName\":\"Name3\"}, 
      {\"ProgramName\":\"Name4\"}]}", 
"tid":2,"action":"DataAction","method":"getProgramNames","type":"rpc"} 

Répondre

1

Votre valeur de résultat est une chaîne, pas un objet liste nommée qui contient un tableau. Il devrait ressembler à ceci (notez que les guillemets doubles autour de la totalité de la valeur « résultat » ont été enlevés):

{"result": 
    {\"list\": 
      [{\"ProgramName\":\"Name1\"}, 
      {\"ProgramName\":\"Name2\"}, 
      {\"ProgramName\":\"Name3\"}, 
      {\"ProgramName\":\"Name4\"}]}, 
"tid":2,"action":"DataAction","method":"getProgramNames","type":"rpc"} 

Avec cela, vous ne devriez pas avoir besoin d'échapper à tous vos guillemets doubles soit.

+0

D'oh! Nous passions d'obtenir XML et JSON et l'une des classes utilisait JsonHierarchicalStreamDriver() pour renvoyer un JSON _String_ au lieu que la méthode directe retourne une liste d'objets. Merci! –

+0

Désolé ... il a effectivement :) Merci beaucoup pour votre réponse. –

Questions connexes