2016-05-13 24 views
0

在我的用户界面上,我有一个网格,我正在对列应用过滤器并获取过滤的数据。在我的REST请求,我的UI在发送过滤器作为关键:值是这样的:如何从EXTJS中的BufferedGrid对象中提取过滤器

filter:[{"operator":"gt","value":222,"property":"qty_raw"}] 

和,我想提取(使用ComponentQuery),这样我可以发送相同的同一网格相同的过滤数据在按钮上单击处理其他请求过滤器/过滤器(多列),我在这样EXTJS在Chrome工具编写代码,

var gridObj = Ext.ComponentQuery.query('myGridId')[0]; 
var filters = gridObj.store.getFilters(); 
console.log("print filters.....",filters); 

过滤器看起来像下面的快照,在这里,我需要的数据是在项目和地图,但我无法达到的数据。我不知道是否有更好的方法来做到这一点?有什么建议么?

filters collection as shown on chrome developer tool

更新:我试着用店里lastOptions属性它干什么,它仍然没有工作(错误:未捕获的类型错误:无法未定义读取属性 'PARAMS')

 var gridObj = Ext.ComponentQuery.query('Grid_xx')[0]; 
    var lastOptions = gridObj.store.lastOptions, 
    lastParams = Ext.clone(lastOptions.params); 
    lastParams.limit = limit; //;var limit = gridObj.store.getTotalCount(); 
    lastParams.page = page; // var page = 1 
    lastParams.start = start; // var start= 1 
    lastParams.columnsNameArray = JSON.stringify(columnsNameArray); 
    console.log("columnArray............ =",lastParams.columnsNameArray); 
    var encodedFilename = Ext.urlEncode(lastParams); 
    Ext.create('Ext.Component', { 
     renderTo: Ext.getBody(), 
     //url: EfwSlamUI.Config.restUrl.GridExport, 
     cls: 'x-hidden', 
     params: lastParams, 
     autoEl: { 
      tag: 'iframe', 
      src: Abc.Config.restUrl.GridExport + '?' + encodedFilename} 
}); 

回答

0

一个建议:

我认为更好的方法是使用store.reload()函数,因为它会自动使用最后一个商店请求使用的最后一个参数。

https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.BufferedStore-method-reload

您可以更改对电网或存储过滤器/分拣机。

https://docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/Ext.data.BufferedStore-property-lastOptions

如果你想防止电网的自动重载,如果过滤器被改变时,禁止商店的自动加载。

+0

我的另一个请求是发送key:value对象作为urlEncoded参数。我不知道如何从已经加载的BufferedGrid(过滤)请求中提取key:value对,我的按钮单击事件发生在屏幕上加载完毕后,然后在SpringMVC中有一个requestMapping方法,该方法使用key:value对请求并发送Excel文件到UI。我用代码更新了我的qus,我用你的建议再次尝试,但它不起作用。 – Jammy