【问题标题】:Clear store and load search result in grid清除网格中的存储和加载搜索结果
【发布时间】:2016-04-22 00:11:00
【问题描述】:

当我加载我的应用程序时,第一个组件是一个网格(带有分页栏)。

网格存储有配置 autload: true

该应用程序有第二个组件,一个表单,用于搜索,并将结果加载到网格中。

当我单击搜索按钮时,如果网格在例如第 2 页上并且搜索字符串仅存在于第一页上,则不会返回任何结果。

我使用的解决方案是转到第一页,删除所有记录(加载时自动加载:true),然后加载搜索结果。

store.loadPage(1) ; 
store.removeAll();
store.proxy.extraParams = {...};
store.load({
  …
});

问题是解决方案需要进行两次连续加载,并简要地网格显示开始记录(自动加载),删除它们然后显示搜索结果。

我的目标是清除网格(存储)以正确加载搜索结果。

有没有更好的方法来做到这一点?

谢谢。

【问题讨论】:

    标签: javascript search extjs grid extjs5


    【解决方案1】:

    你可以:

    store.proxy.extraParams = {...};
    store.loadPage(1, {...});
    

    除非你使用clearOnPageLoad: false

    【讨论】:

      【解决方案2】:

      不要做两次加载,而是在 store 的 loadPage 函数中传递参数:

      store.loadPage(1,{
          params: your_params, //store.proxy.extraParams = {...};
          callback: function(records,operation,success){
              //your code
          }
      });
      

      【讨论】:

      • 如果您通过loadPage() 选项添加搜索参数,它只会影响这个单个请求,我想我们必须添加搜索参数来存储extraParams,因为它应该会在搜索字段之前影响所有后续请求清除或类似的东西。
      • 但是如果我们清理所有搜索字段,预期的结果应该是所有记录(因为没有过滤器)而不是被 extraParams 过滤的记录或¿我是否误解了您的评论>。
      • 如果我们清除搜索字段,我们必须从存储 extraParams 中删除搜索参数,但如果我们将搜索参数传递给 loadPage() 选项,例如,过滤后的数据集包含 @987654326 上的许多页面@我们将加载未过滤的数据集。
      • 感谢qmat的建议
      • 感谢 sergey,我现在正在尝试实施您的建议,我最好按照您的指示思考这个问题...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      相关资源
      最近更新 更多