【问题标题】:Simply retrieving all records from a store只需从商店中检索所有记录
【发布时间】:2013-08-22 19:09:00
【问题描述】:

我如何修改以下代码来检索所有记录,而不是从我的商店中检索单行数据?

var store = Ext.data.StoreManager.lookup('MyStore');
        store.setProxy({
            type: 'pagingmemory',
            data: store.getAt(0)
          });
        store.load();

有什么想法吗?

【问题讨论】:

  • store.getRange() 应该可以使用,或者您可以使用store.data.items。对于getRange() 调用,不传递参数只是默认为0 和存储中的最后一条记录。
  • 这成功了!先生,您真是个天才。
  • 把它扔到答案中,这样我就可以投票了!

标签: javascript extjs rows store


【解决方案1】:

您可以使用store.getRange(),也可以使用store.data.items。对于getRange() 调用,不传递任何参数默认为0 和存储中的最后一条记录。

【讨论】:

  • 谢谢,我有一个 checkColumn,我想一次只选择一个复选框。 store.data.items 就像一个魅力。
【解决方案2】:

我认为这并不完全正确,因为getRange() 将从商店首页检索所有记录。

如果您的商店每页有 50 条记录,那么 store.getRange() 将只为您提供前 50 条记录。

【讨论】:

    【解决方案3】:

    这将使用所有记录重新加载商店:

    store.load({start:0, limit: store.totalCount, page:1});
    

    从存储中取出所有记录:

    var records = store.getRange();`
    

    【讨论】:

      【解决方案4】:
      store.getRange()
      

      仅当网格未定义为具有缓冲存储时,才会检索当前正在处理的页面。存储可以设置为缓冲:

      (buffered: true)
      

      但这会降低性能,因为即使检索单个页面也会缓冲整个页面。

      我想到的最有效的方法是:

          var pageSize = store.pageSize // will return the page size.
          var totalCount = store.totalCount // This will return total no of items
      
          for (var i=0; i<(totalCount/pageSize)+1;i++) {
               store.loadPage(i) // this will set the current page of the store to i variable.  
               ....
               ....
          }
      

      【讨论】:

        猜你喜欢
        • 2017-02-24
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多