ClientFilter가 활성화 된 JsonRestStore에 Dojo Datagrid가 바인딩되었습니다. 동작 내가 원하는 :Dojo JsonRestStore 및 ClientFilter는 서버에서 절대 업데이트되지 않습니다.
나는 데이터 그리드에 필터를 호출 할 때마다, 가게 로컬 쿼리를 수행하고 그리드를 업데이트해야합니다. 한편 서버에 동일한 검색어 인 을 보내고받은 데이터를 클라이언트에 추가합니다. 필터링 된 데이터.
ClientFilter에 대한 문서는 이것이 어떻게 작동 할 것이라고 말합니다.
데이터 격자가 초기 필터 설정에 따라, 한 번 서버에서 데이터를로드 : 이것은 내가 얻는 동작입니다. 더 이상 datagrid.filter를 호출하면 만 클라이언트의 데이터를 필터링합니다. 서버에 더 이상 XHR 호출을 보내지 않았습니다. 이 전송되었습니다.
버그를 찾기 위해 ClientFilter.js를 디버깅했지만 시간이 너무 많이 걸렸습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
편집 : 나는 여기에이 정보를 넣으려고합니다. 비슷한 정보를 찾고있는 누군가가 붙어 있지 않기를 바랍니다. ClientFilter 및 JsonRestStore에는 알려진 문제점이 있습니다. 인터넷의 모든 이전 문서와 혼동되어서 dojo.data.JsonRestStore를 사용했습니다. 이전의 지원되지 않는 (?) 저장소입니다. Dojo는 이제 새로운 ObjectStore API로 이동했습니다. 이 새로운 API를 구현하는 가장 가까운 상점은 dojo.store.JsonRest하고 ClientFilter 기능은 캐시 유지 캐시 된 dojox.data.JsonRestStore의 모든 일,
내가 원하는 것은 내가 만든 날짜를 기준으로 필터링하는 것이라고 말합니다. 필자가 필터를 줄이면 클라이언트 측에서 필터링하고 나에게 제공해야하지만 필터 범위를 늘리면 서버에서 더 많은 결과를 얻을 수 있습니다. 그 일이 공정하지 않은가? – navjotk
유스 케이스를 조금 더 설명하면 : fromDate 및 toDate의 두 필드를 필터링하고 있습니다. 처음 fromDate = 2012-01-20 및 toDate = 2012-01-24. 서버에서 적절한 결과를 얻습니다. 이제 fromDate를 2012-01-21로 변경하면 클라이언트에서 데이터 집합을 필터링하여 결과를 보여줍니다. 이것은 필수 동작입니다. fromDate를 2012-01-19로 변경하면 저장소에서 서버의 더 많은 데이터를 요청할 것으로 예상되는 동작입니다. 대신 저장소는 캐시에있는 모든 데이터를 반환합니다 (데이터는 19 일을 포함하지 않습니다). – navjotk