Ext JS: FormPanel pas peupler les champs avec les données JSON
J'ai un FormPanel avec 3 champs et un JsonReader. Voici la configuration:
var goalPanel = new Ext.FormPanel({
reader: new Ext.data.JsonReader({
idProperty: 'id',
root: 'items',
fields: [
{name: 'referenceSales', type:'float'},
{name: 'increasePercentage', type: 'float'},
{name: 'salesGoal', type: 'float'}
]
}),
labelAlign: 'top',
frame:true,
bodyStyle:'padding:5px 5px 0',
items: [{
layout:'column',
items:[{
columnWidth:.33,
layout: 'form',
items: [{
fieldLabel: 'Reference Sales',
xtype: 'numberfield',
name: 'referenceSales',
readOnly: true,
disabled: true,
anchor:'95%'
}]
},{
columnWidth:.33,
layout: 'form',
items: [{
fieldLabel: 'Increase %',
name: 'increasePercentage',
xtype: 'numberfield',
anchor:'95%',
decimalPrecision: 2,
}
}]},{
columnWidth:.34,
layout: 'form',
items: [{
fieldLabel: 'Sales Goal',
name: 'salesGoal',
xtype: 'numberfield',
anchor:'95%',
decimalPrecision: '2',
}]
}]
}],
buttons: [{
text: 'Recalculate'
}]
});
Voici comment j'ai charger les données:
goalPanel.getForm().load({url:'goal/getAnnualSalesGoal', method:'GET',params:myParams} );
Voici la réponse JSON, comme on le voit dans Firebug:
{"items":[{"referenceSales":700000,"salesGoal":749000,"increasePercentage":0.07}]}
Je n'obtiens pas d'erreurs, et après charge les champs du formulaire sont certainement vide. Comment puis-je résoudre ce problème, ou de commencer à déboguer?
OriginalL'auteur Mike Sickler | 2009-08-29
Vous devez vous connecter pour publier un commentaire.
Si vous regardez la documentation pour Ext.forme.BasicForm, il est dit que la prise en charge de JSON est intégré dans BasicForm, de sorte que vous n'avez pas besoin d'utiliser un JsonReader pour charger les données dans votre formulaire. Qui ne devrait pas faire de mal si.
Je pense que le principal problème est peut-être que de la charge des appels à BasicForm s'attendre à une réponse JSON comme ceci:
mais le vôtre est dans un tableau.
(à partir de la Ext.forme.BasicForm.charge docs)
Comme une note de côté, si vous utilisez Ext 3.0,
hbox
mise en page est beaucoup plus facile à traiter quecolumns
.Comment faites-vous appel à la charge? Quelque chose comme
goalPanel.getForm().load({url: '/your/script.plx'});
?Oui, j'ai ajouté ma charge d'appel pour le code ci-dessus.
J'ai eu le même problème, le FormPanel requis les "données" de la propriété dans la réponse sera un tableau à un seul élément, tout comme dans la question, sinon il juste ne pas faire n'importe quoi. L'ajout d'un "succès": true était ce qu'il fixe pour moi. Merci!
OriginalL'auteur wes
Tout y est, vous ne pouvez pas le voir, parce que la forme de la hauteur est de 0.
Il suffit de le mettre comme ceci:
Aussi, il y a une faute de frappe . Cela fonctionne pour moi:
C'est le résultat:
ceci: }]},{ devraient être: ]},{
et il ne fonctionne pas dans IE si je n'ai pas supprimer le solde non utilisé des virgules dans "decimalPrecision: 2,"
OriginalL'auteur rodrigoap
ExtJS 4.1 semble désormais par défaut de l'acceptation d'un de données unique objet au lieu d'un tableau de données, comme mentionné précédemment.
OriginalL'auteur MikeC