【问题标题】:Ext.JsonStore accesing custom property returned by the server in jsonExt.JsonStore 访问服务器以 json 格式返回的自定义属性
【发布时间】:2011-07-13 12:52:02
【问题描述】:

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

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

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

提前致谢 安德烈亚斯

【问题讨论】:

    标签: extjs properties jsonstore


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 忽略这一行 //pb.store.getHeaders = pb.store.createAccessor("headers");
      猜你喜欢
      • 2014-09-14
      • 1970-01-01
      • 2019-05-09
      • 2016-12-18
      • 1970-01-01
      • 2020-03-14
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多