2016-09-02 8 views
0

"Dojo ItemFileReadStore의 소스 인 JSON이 있고 그 상점이 Dojo DataGrid라는 이름의 bdayGrid라는 이름을 가지고 있고 행마다 두 개의 속성이있는 경우"name "과"생일 "의이 생일 (즉 1998년 3월 14일) YYYY-MM-DD 형식에 저장되어 있다고 가정 해 봅시다 :.Dojo ItemFileReadStore에 범위 필터/쿼리를 추가하는 방법

{ 
    "items": [ 
    { "name": "Bob", "birthdate": { "_type": "Date", "_value": "1965-08-20"}, 
    { "name": "Jack", "birthdate": { "_type": "Date", "_value": "1969-11-12"}, 
    { "name": "Will", "birthdate": { "_type": "Date", "_value": "1998-04-20"} 
    ] 
} 

당신이 날짜 범위를 정의 저장이 유효한 날짜가 또한 가정 :

var beginDate = "1995-01-05"; 
var endDate = "2016-01-01"; 

그런 다음 어떻게 효과적으로 필터링 할 ItemFileReadStore에 대한 쿼리를 코딩 할 수 있습니까? 모자 날짜 범위? 단일 값으로 필터링하는 것이 쉬운 것처럼 보입니다. 당신은 다음과 같은 코드를 작성합니다 :

bdayGrid.filter({birthday: "1965-08-20"}); 

범위에서 날짜를 필터링하는 데 사용되는 상한/하한 값 쌍을 전달하는 방법은 무엇입니까? 사용자 정의 Dojo 데이터 스토어 QueryEngine을 코딩해야합니까? 그렇다면, 어떻게 보일까요?

답변

0

필터 메커니즘이이 애플리케이션에 적합하지 않다고 생각합니다.

데이터에 다른 부울 필드 (예 : _show)를 추가하고 해당 필드를 필터링합니다. 그런 다음 저장소 항목을 반복하고 내 날짜 범위와 일치하는지 확인하고 이에 따라 부울 필드를 설정합니다.

이 필드를 변경하려면 ItemFileWriteStore를 사용해야한다고 생각합니다.

날짜에 Date을 사용하는 것이 더 쉽습니다.

function filter(/*Date*/ startDate, /*Date*/ endDate){ 
    store.fetch({ 
    onItem: function(item){ 
     var date = store.getValue(item, '_value'); 
     store.setValue(item, '_show', (startDate <= date) && (date <= endDate)); 
    })) 
    }); 
}