J'ai un contrôleur de ressort;Grille de charge ExtJS après demande Ext.Ajax
@RequestMapping("/showreport")
@ResponseBody
public Map<String, ? extends Object> showreport
(parameters)
{
List<Object> listOne = ...;
Object objectOne = ...;
Map<String,Object> modelMap = new HashMap<String,Object>(3);
modelMap.put("total", listOne.size());
modelMap.put("data", listOne);
modelMap.put("summary", objectOne);
modelMap.put("success", true);
return modelMap;
}
et j'ai le code ExtJS comme celui-ci pour afficher la grille dans une fenêtre modale
Ext.Ajax.request({
url: 'url',
params:
{
// parameters
},
success: function (response)
{
var jsonData = Ext.util.JSON.decode(response.responseText);
store.proxy = new Ext.ux.data.BufferedPagingMemoryProxy(jsonData.data);
/* what will I do */
new Ext.Window({
title: 'title',
plain: true,
border: false,
modal: true,
items: [grid],
height:Ext.getBody().getViewSize().height - 100,
width:Ext.getBody().getViewSize().width*0.8 //80%
}).show();
},
failure: function(){},
});
et ma grille, magasin et les lecteurs sont comme ça;
var Report = Ext.data.Record.create([
{name: 'a'},
{name: 'b', type: 'string'},
{name: 'c', type: 'string'},
{name: 'd', type: 'string'},
{name: 'e', type: 'string'},
{name: 'f', type: 'string'},
{name: 'g'},
{name: 'h'},
{name: 'i', type: 'string'},
{name: 'j'},
{name: 'k', type: 'string'},
{name: 'l', type: 'string'}
]);
var reader = new Ext.data.JsonReader({
totalProperty: 'total',
successProperty: 'success',
idProperty: 'id',
root: 'data'
},
Report);
store = new Ext.data.JsonStore({
id: 'reportID',
reader: reader
});
var grid = new Ext.grid.GridPanel({
id: 'tripDailyReportList',
store: store,
autoHeight : true,
loadMask: true,
autoHeight: true,
columns:[
new Ext.grid.RowNumberer(),
{header: 'headerA', dataIndex: 'a'},
{header: 'headerB', dataIndex: 'b'},
{header: 'headerC', dataIndex: 'c', sortable: true},
{header: 'headerD', dataIndex: 'd', sortable: true},
{header: 'headerE', dataIndex: 'e', sortable: true},
{header: 'headerF', dataIndex: 'f'},
{header: 'headerG', dataIndex: 'g'},
{header: 'headerH', dataIndex: 'h'},
{header: 'headerI', dataIndex: 'i'},
{header: 'headerJ', dataIndex: 'j'},
{header: 'headerK', dataIndex: 'k'}
]
});
Je souhaite charger une grille dans une fenêtre après une requête ajax. J'ai ouvert la fenêtre, mais je ne pouvais pas charger le magasin avec des données. mon json est comme ceci;
{"total": 56, "données": [{"a": "1", "b": "2", "c": "3", "d": "4" , "e": "5", "f": "6", "g": "7", .....}], "résumé": {"a": "1", "b": "2", "c": "3", "d": "4", "e": "5", "f": "6"}, "succès": vrai}
tu m'aides, pour arranger ça?
Merci pour votre réponse, j'ai résolu mon problème. Nous devons inclure des balises meta json dans le contrôleur. L'idProperty de Reader doit être identique à idProperty de json. Que nous pouvons utiliser 'var jsonData = Ext.util.JSON.decode (response.responseText); grid.store.loadData (jsonData); ' – vtokmak