2017-12-18 229 views
0

如何在多個字段上創建過濾器,哪些過濾器在服務器上過濾,而不在本地存儲中過濾?如何在多個字段上創建遠程過濾器?分機Js 5

到目前爲止,我只得到本地。

onFilter: function(field, newValue, oldValue, options){ 
    var grid = Ext.getCmp('grid'); 
    grid.store.clearFilter(); 

    if (newValue) { 
     var matcher = new RegExp(Ext.String.escapeRegex(newValue), "i"); 
     grid.store.filter({ 
      filterFn: function(record) { 
       return matcher.test(record.get('id')) || 
        matcher.test(record.get('names')); 
      } 
     }); 
    } 
} 

回答

1

您無法在遠程過濾中使用filterFn設置過濾器。遠程過濾只能採用發送到後端的屬性值 - 運算符組合,並且必須由後端進行評估和處理。

要過濾的多個屬性,你當然可以發送多個過濾器後端:然後

store.addFilters([{ 
    id: 'idFilter', 
    property: 'id', 
    operator: 'eq', 
    value: newValue 
},{ 
    id: 'nameFilter', 
    property: 'names', 
    operator: 'like', 
    value: newValue 
}]); 

後端有評估和這些過濾器適用於數據。這些值發送給後端無客戶端驗證或使用,所以你甚至可以發送任意的財產或經營者名稱到後端:

store.addFilters([{ 
    id: 'idOrNameFilter', 
    property: 'idOrName', 
    operator: 'somethingsomething', 
    value: newValue 
}]); 

你只需要告訴你的後端正確解析屬性名從參數字符串中並相應地執行。