我在ExtJs 4.2中有一个网格。我需要应用远程排序,重新过滤和分页。所以我的商店看起来像这样:
storeId: 'mainStore',
pageSize: 10,
autoLoad: {
start: 0,
limit: 10
},
autoSync: true,
remoteSort: 'true', //For Remote Sorting
sorters: [{
property: 'COM_KOP_Vertriebsprojektnummer'
direction: 'ASC'
}],
remoteFilter: true, //For Remote Filtering
proxy: {
type: 'rest',
filterParam: 'filter',
url: PfalzkomApp.Utilities.urlGetData(),
headers: {
'Content-Type': "application/xml"
},
reader: {
type: 'xml',
record: 'record',
rootProperty: 'xmlData'
}
}
我不想设置buffered = true case,它会提前加载我的页面,我有1000页,我不想这样做。
远程过滤,分页,排序工作正常但是当我尝试过滤某些事情时,单独的分类请求也是如此。我怎么能阻止它?
当我尝试过滤一些东西时,有两个请求:http://127.0.0.1/projektierungen/?_dc=1437058620730&page=1&start=0&limit=10&sort=[ { “属性”: “COM_KOP_Vertriebsprojektnummer”, “方向”: “DESC”}]
http://127.0.0.1/projektierungen/?_dc=1437058620734&page=1&start=0&limit=10&sort=[ { “属性”: “COM_KOP_Vertriebsprojektnummer”, “方向”: “DESC”}]&安培;过滤器= [{ “属性”: “COM_KOP_Vertriebsprojektnummer”, “值”: “2882”}] < / p>
如何停止第一次请求?
我的过滤列代码如下:
{
text: 'Vertriebsprojektnr',
dataIndex: 'COM_KOP_Vertriebsprojektnummer',
flex: 1,
items : {
xtype:'textfield',
flex : 1,
margin: 2,
enableKeyEvents: true,
listeners: {
keyup: function() {
var store = Ext.getStore('mainStore');
store.clearFilter();
if (this.value) {
//debugger;
//debugger;
store.filter({
property : 'COM_KOP_Vertriebsprojektnummer',
value : this.value,
anyMatch : true,
caseSensitive : false
});
}
},
buffer: 1000,
}
}
}
由于这个自动生成的请求,我的观点不正常。过滤后的结果将被此排序请求替换。 请帮助。
答案 0 :(得分:4)
额外的请求不存在是因为排序,而是因为对store.clearFilter()
的调用。尝试调用可以阻止该额外请求的事件的store.clearFilter(true)
。
答案 1 :(得分:0)
为什么在值为空时清除过滤器?为什么不过滤空值?我几乎得到了相同的情况,但我认为我的解决方案运行良好,没有清除任何东西。除此之外,我不想知道要过滤哪个商店或者将属性名称硬编码。这是我的过滤器字段:
Ext.define('Fiddle.form.TextField', {
extend: 'Ext.form.field.Text',
alias: 'widget.filterfield',
emptyText: 'Filter',
width: '100%',
cls: 'filter',
enableKeyEvents: true,
listeners: {
keyup: {
fn: function(field, event, eOpts) {
this.up('grid').getStore().filter(new Ext.util.Filter({
anyMatch: true,
disableOnEmpty: true,
property: field.up('gridcolumn').dataIndex,
value : field.getValue()
}));
},
buffer: 250
}
}
});
这是视图声明:
dataIndex: 'company',
text: 'Company',
flex: 1,
items: [{
xtype: 'filterfield'
}]