2

我有一个以 json 格式返回数据的 EXtJS Web 应用程序。结果在 ExtJS Grid 中分页显示,并由 pagingToolbar 处理。我正在使用slidingPager 插件来选择页面。当用户使用滑块选择页面时,我需要在页码之外显示该页面第一个结果的标题。

因此,在 jason 数据中,服务器额外返回以计数和记录数据等。我添加了一个名为 headers 的属性,它实际上是每个页面第一个结果的标题数组。

我不知道如何访问和处理这个新属性,这样我就可以在第 10 页获取 json 数据中标题属性的第 10 项。

在此先感谢安德烈亚斯

4

2 回答 2

6

JsonReader 有一个名为 jsonData 的属性,它是响应中返回的原始 JSON:

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

你可以像访问它yourGridObject.getStore().reader.jsonData

于 2011-03-11T14:20:47.923 回答
0

谢谢!有效。我得到了 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,所以我发送两个标题。

于 2011-03-14T10:05:24.270 回答