Ext.JsonStore 访问服务器以 json 形式返回的自定义属性

发布于 2024-10-21 14:33:24 字数 304 浏览 3 评论 0原文

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

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

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

提前致谢 安德烈亚斯

I have a EXtJS web application that returns data in json format. The results are presented paged in ExtJS Grid and are handled by pagingToolbar. I'm using slidingPager plugin to select the pages. What i need when the user selects the page with the slider is to show additionaly to the page number the title of the first result of that page.

So in the jason data the server returns additionaly to count and records data etc. i'm adding a property called headers that is actualy an array of the titles of the first result of each page.

What i dont know is how i can access and handle this new property so i can grab for e.g the 10th page the 10th item of the header property in the json data.

Thanks in advance
Andreas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

煞人兵器 2024-10-28 14:33:24

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

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

您可以像 yourGridObject.getStore().reader 一样访问它。 json数据

There is a property of the JsonReader called jsonData, which is the raw JSON returned in the response:

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

You can access it like yourGridObject.getStore().reader.jsonData

山色无中 2024-10-28 14:33:24

谢谢!它起作用了。我得到了 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,所以我发送两个标头。

Thanks! it worked. I got the source of Ext.ux.SlidingPager and changed to this

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

I'm returning the Json data like this

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

Say that pagesize is 50 so i send two headers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文