2017-12-18 35 views
0

로컬 저장소가 아닌 서버에서 필터링하는 여러 필드에 필터를 만들려면 어떻게해야합니까?여러 필드에 원격 필터를 만드는 방법은 무엇입니까? Ext 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 
}]); 

매개 변수 문자열에서 삭제하고 그에 따라 작동하십시오.