2012-01-22 2 views
0

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의 모든 일,

+0

내가 원하는 것은 내가 만든 날짜를 기준으로 필터링하는 것이라고 말합니다. 필자가 필터를 줄이면 클라이언트 측에서 필터링하고 나에게 제공해야하지만 필터 범위를 늘리면 서버에서 더 많은 결과를 얻을 수 있습니다. 그 일이 공정하지 않은가? – navjotk

+0

유스 케이스를 조금 더 설명하면 : fromDate 및 toDate의 두 필드를 필터링하고 있습니다. 처음 fromDate = 2012-01-20 및 toDate = 2012-01-24. 서버에서 적절한 결과를 얻습니다. 이제 fromDate를 2012-01-21로 변경하면 클라이언트에서 데이터 집합을 필터링하여 결과를 보여줍니다. 이것은 필수 동작입니다. fromDate를 2012-01-19로 변경하면 저장소에서 서버의 더 많은 데이터를 요청할 것으로 예상되는 동작입니다. 대신 저장소는 캐시에있는 모든 데이터를 반환합니다 (데이터는 19 일을 포함하지 않습니다). – navjotk

답변

1

슬프게도 dojo.store.Cache에 의해 제공됩니다, 당신은 플러시 수 없습니다 내가 아는 한 항목이나 쿼리. clearCache()를 시도해 볼 수 있습니다. 캐싱에 가볍게 의존한다면 작동 할 수 있습니다. 그렇지 않으면 필요에 따라 실제 clearCache를 달성하기 위해 JRS를 심도있게 검토해야합니다. 필요에 따라 을 입력하면이 필터에 연결되어 "& date ="+ (new Date(). toString()) 또는 이와 비슷한 작은 쿼리를 사용하여 상점에서 매우 동일한 쿼리를 실행합니다. 새로 고침을 강요하는 것과 같습니다 ... 문제를 완전히 해결할 수 있을지 확실하지 않으며 첫 번째 필터를 빠르게로드하는 경우를 제외하면 캐시의 목적을 무력화 할 수 있습니다. 쿼리를 강요하면 DataGrid가 업데이트 될지 확신 할 수 없지만 시도해 볼 수는 있습니다.

+0

제 아이디어는 캐시를 사용하여 모든 쿼리에 대해 초기 결과를 빠르게 표시하는 것입니다. 이를 통해 사람들을 실제로 돕기 위해서는 캐시를 많이 사용해야하므로 clearCache는 아마도 옵션이 아닙니다. – navjotk

+0

그런 다음 필자가 필터링에 연결하고 날짜/타임 스탬프 param을 추가하여 새 페치를 발행하여 캐시를 먼저로드 한 다음 가져 오기 + 날짜로 새로 고침을 시도해 볼 수는 있지만 이전에는 시도한 적이 없었습니다 :) – PEM

+0

URL의 GET 매개 변수가 두 요청 (원래 질문에 대한 주석 참조) 사이에서 변경되기 때문에이 방법이 효과가 있을지 잘 모르겠습니다. 내 문제는 브라우저가 서버의 응답을 캐시하고있는 것이 아니라 저장소가 서버에서 새로운 데이터를 가져 오려고 시도하지 않는다는 것입니다 (Firebug를 사용하여 확인하고 있음). URL을 변경하면 도움이 될 것이라고 생각하십니까? – navjotk

관련 문제