Ext.JsonStore получает доступ к пользовательскому свойству, возвращаемому сервером в json - PullRequest
2 голосов
/ 11 марта 2011

У меня есть веб-приложение EXtJS, которое возвращает данные в формате json. Результаты представлены постранично в ExtJS Grid и обрабатываются pagingToolbar. Я использую плагин slidePager для выбора страниц. Когда пользователь выбирает страницу с помощью ползунка, мне нужно показать дополнительно к номеру страницы заголовок первого результата этой страницы.

Таким образом, в данных jason сервер возвращает дополнительные данные для подсчета и записи данных и т. Д. Я добавляю свойство, называемое заголовками, которое фактически представляет собой массив заголовков первого результата каждой страницы.

Что я не знаю, так это как я могу получить доступ к этому новому свойству и управлять им, чтобы я мог, например, на 10-й странице получить 10-й элемент свойства заголовка в данных json.

Спасибо заранее Andreas

Ответы [ 2 ]

6 голосов
/ 11 марта 2011

Существует свойство JsonReader, называемое jsonData, которое является необработанным JSON, возвращаемым в ответе:

http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.JsonReader

Вы можете получить к нему доступ как yourGridObject.getStore().reader.jsonData

0 голосов
/ 14 марта 2011

Спасибо!это сработало.Я получил источник Ext.ux.SlidingPager и изменил на это

Ext.ux.SlidingPagerWithHeaders = Ext.extend(Object, {

    init : function(pbar){
        var idx = pbar.items.indexOf(pbar.inputItem);
        Ext.each(pbar.items.getRange(idx - 2, idx + 2), function(c){
            c.hide();
        });
        var slider = new Ext.Slider({
            width: 114,
            minValue: 1,
            maxValue: 1,
            plugins: new Ext.slider.Tip({
                getText : function(thumb) {
                    var header = pbar.store.reader.jsonData.headers[thumb.value-1];
                    return String.format('Page <b>{0}</b> of <b>{1}</b><br><br>', thumb.value, thumb.slider.maxValue)+header;
                }
            }),
            listeners: {
                changecomplete: function(s, v){
                    pbar.changePage(v);
                }
            }
        });
        pbar.insert(idx + 1, slider);
        //pb.store.getHeaders = pb.store.createAccessor("headers");
        pbar.on({
            change: function(pb, data){
                slider.setMaxValue(data.pages);
                slider.setValue(data.activePage);
            }
        });
    }
}); 

Я возвращаю данные Json, как это

{ "count": 100,
  "records" : [{record 1 ...},{ record 2 ...}, ...],
  "headers" : ["Header1", "Header2"]
}

Скажите, что размер страницы равен 50, поэтому я отправляю двазаголовки.

...