我在 Ext 4.2.1 中有一个 MVC 应用程序,我正在使用重新配置创建一个动态网格。它运作良好,但我坚持如何使用 Ext.ux.grid.FiltersFeature 向网格添加过滤器。我见过的所有例子都是硬编码的。
在我的情况下,我的商店和网格列在用户做出选择之前都是未知的。然后,我使用以下函数在 for 循环中即时构建它:
onBuildGrid: function() {
var store = this.getStore('Keys');
var grid = this.getIndexGrid();
var rvabrep = this.getStore('Rvabreps');
var columnModel = [];
var fields = [];
var triggerFn = function() {
this.setValue('');
var store = this.up('tablepanel').store;
store.clearFilter();
};
for (i = 0; i < store.data.items.length; i++) {
dataIndex = store.data.items[i].data.IDX;
text = store.data.items[i].data.IDXDESC;
columnModel.push({
text: text,
dataIndex: dataIndex,
});
fields.push({
name: dataIndex
});
}
rvabrep.model.setFields(fields);
grid.reconfigure(rvabrep, columnModel);
在推送函数中,我需要添加以下代码,但无法弄清楚如何在函数内为 keyup 侦听器获取变量。OnTriggerClick 函数有效,但很容易将其作为变量,因为它是静态的。
我想我可以对 keyup 功能使用相同的技术,只要我能弄清楚如何去做。
我需要一个 javascript 天才来拯救我!!!谢谢!
items: {
xtype: 'trigger',
triggerCls: 'x-form-clear-trigger',
onTriggerClick: triggerFn
flex : 1,
margin: 2,
enableKeyEvents: true,
listeners: {
keyup: function() {
var store = this.up('tablepanel').store;
store.clearFilter();
if (this.value) {
store.filter({
//property needs to be the variable "dataindex"
property : ?this_needs_to_be_a variable?
value : this.value,
anyMatch : false,
caseSensitive : false
});
}
},
buffer: 500
}
}