extjs datefilter запускает дополнительные запросы ajax? - PullRequest
0 голосов
/ 08 марта 2011

Я инициализировал GridFilter с фильтром даты следующим образом:

var filtersXXX = new Ext.ux.grid.GridFilters({
    filters: [
        {type: 'date',  dataIndex: 'confirmedDate'}
    ]
});
filtersXXX.autoReload = false;
this.XXXGrid.plugins=[this.XXXGrid.initPlugin(filtersXXX)];

//Add an event handler when the filter is updated:
this.XXXGrid.on('filterupdate',function(){
    alert('filterupdate');
    this.XXXTab.populateData.call(this);      //populatedata is custom function that sends ajax request
},this);

//Override the buildquery to manipulate the params
filtersXXX.buildQuery = function (filtersXXX) {
    var filterparams = Ext.util.JSON.decode(this.store.baseParams.filterParams);  //  filterParams is defiend inside the store as namevaluepair.This will be sent to server 
    for(var i=0, len=filtersXXX.length; i<len; i++) {
        var gridFilter1 = filtersXXX[i];

        var objTemp = {x:  gridFilter1.data["value"]};
        objTemp[gridFilter1.field] =objTemp["x"]; 
        delete objTemp["x"];
        Ext.apply(filterparams,objTemp);

    }
    return {filterParams:Ext.util.JSON.encode(filterparams)};
}

Когда страница загружается, и я выбираю дату (допустим, до), «filterupdate» срабатывает 3 разаи каждый приводит к вызову populateData.Таким образом, есть 3 запроса AJAX.В последующее время при каждом изменении фильтра, т.е. при выборе другой даты, он срабатывает дважды.

Что я делаю не так?
РЕДАКТИРОВАТЬ: XXXGrid - это GridPanel

РЕДАКТИРОВАТЬ #2. Проблема, по-видимому, заключается в следующем: когда вы выбираете средство выбора даты, оно немедленно запускает событие filterupdatevent.Это приводит к вызову populatedata, т.е. 1 ajax-запросу.После этого он запускает oncheckchange ---> filterupdate -> populatedata ---> ajax-запрос Затем onmenuselect -> filterupdate -> populatedata ---> ajax-запрос

Есть ли способ сделать это: когда срабатывает первая 'filterupdate', проверьте, есть ли там также 'oncheckchange' или 'onmenuselect'.если есть, ничего не делать в первом фильтре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...