ExtJS загружает сетку после Ext.Ajax.request - PullRequest
1 голос
/ 10 февраля 2012

У меня есть контроллер пружины;

@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;
}

и у меня есть такой ExtJS-код для отображения сетки в модальном окне

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 (){},
     });

и моя сетка, магазин и читатели такие;

    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'}
            ]
});

Я хочу загрузить сетку в окне после ajax-запроса. Я открыл окно, но я не мог загрузить магазин с данными. мой json такой;

{"всего": 56, "данные": [{"a": "1", "b": "2", "c": "3", "d": "4", "e ":" 5 "," f ":" 6 "," g ":" 7 ", .....}]," summary ": {" a ":" 1 "," b ":" 2 " , "С": "3", "d": "4", "е": "5", "F": "6"}, "успех": истинно}

Вы можете помочь мне исправить это?

Ответы [ 2 ]

1 голос
/ 27 ноября 2012

Мы должны включить мета-теги json в контроллер. idProperty считывателя должен совпадать с idProperty от json. Чем мы можем использовать var jsonData = Ext.util.JSON.decode(response.responseText); grid.store.loadData(jsonData);

0 голосов
/ 14 февраля 2012

Я не знаю, что делает этот плагин, но кажется, что данные не загружаются в хранилище.Может быть, достаточно набрать store.load().

...