Utilizzo di Ext.ux.grid.FiltersFeature, dispongo di filtri remoti e sto tentando di scrivere una funzione per applicare un filtro data su una colonna della griglia a livello di codice (anziché fare clic sul menu a discesa del filtro nell'intestazione della colonna). La prima volta che eseguo la funzione, il grid store viene ricaricato senza il filtro. Quando eseguo la funzione una seconda volta (e successivamente ogni volta) funziona perfettamente, il negozio si ricarica con i filtri. Ecco l'essenza della funzione che ho:Applicare il filtro di griglia dalla funzione
// a filter object for testing
aFilter = {type: 'date', field: 'a_date_field', comparison: 'gt', value: '2012-03-08 00:00:00'}
var grid = Ext.create('Ext.grid.Panel', {
store: store,
features: [{
ftype: 'filters',
}],
columns[{
header: 'ID',
dataIndex: 'id',
itemId: 'id',
width: 40,
}, {
xtype: 'datecolumn',
header: 'Date',
dataIndex: 'a_date_field',
itemId: 'a_date_field',
width: 75,
format:'j-M-Y',
filterable: true
}],
listeners: {
'afterrender': function() {
// Need to create the filters as soon as the grid renders
// rather than waiting for the user to click on the header
grid.filters.createFilters();
}
},
bbar: [{
text: 'Do a filter',
handler: function() {
// get the filter that is attached to the grid
var gridFilter = grid.filters.getFilter(aFilter.field);
// have to do this to create a menu for this filter
gridFilter.init({dataIndex: aFilter.field, type: aFilter.type, active: true});
// if this column is a date filter column
if (gridFilter.type == 'date') {
var dateValue = Ext.Date.parse(aFilter.value, 'Y-m-d H:i:s');
if (filter.comparison == 'gt') {
gridFilter.setValue({after: dateValue});
} else {
gridFilter.setValue({before: dateValue});
}
}
}
}
});
Ho anche scoperto che questa funzione è la prima volta che se clicco su qualsiasi menu intestazione griglia prima di eseguire la funzione.
Ho cercato di scoprire quali modifiche sono apportate alla griglia che rendono il filtro funzionante dopo il primo tentativo non riesce o cosa fare clic su intestazione della griglia per fare funzionare il filtro. Ma niente di ciò che aggiungo sembra risolvere il problema in modo che venga eseguito la prima volta. Qualcuno l'ha implementato con successo?
Hai provato a chiamare 'createFilter()' sull'oggetto 'FiltersFeature'? –