2012-11-06 7 views
1

dgrid를 JsonRest와 함께 사용하려고합니다. 필자는 JSON 데이터를 다시 발행하는 Perl 기반 서버 측 구성 요소를 구현했습니다. 응답 데이터는 다음과 같습니다.Dojo Store, Dgrid 및 Erratic Entries

{"id:": 00016, "num": 00016, "range": "15 - 63 (49)", "uid": "0", "ipaddress": "xx.xx.xx.xx", "hostname": "", "referer": "http:\/\/www.facebook.com\/l.php?u=http%3A%2F%2Fasisaid.com%2Fjournal%2Farticle%2F1604.html&h=8e20f", "useragent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8", "date":1281010282000} 

해시 "행"은 배열 내에 있습니다. dgrid가로드되면 Range 헤더없이 서버 구성 요소를 쿼리하고 서버 구성 요소는 기본 데이터 범위를 반환합니다. 그런 다음 dgrid는 "Range : items = 0-24"로 다시 쿼리합니다. 응답으로 서버는 나열된 형식의 항목 1-25와 응답 헤더 "Content-Range : items 0-24/470"을 제공합니다.

dgrid가 다음 40 개 항목을 요청할 때 문제가 발생합니다. 그것은 "Range : items = 23-63"을 요청하고 서버가 요청을 성공적으로 수행합니다 (데이터를 검색 한 WebKit 개발자 도구를 사용하여 볼 수 있음). 그러나 dgrid 자체를 스크롤하면 1-25 행이 표시되고 40 행으로 이동합니다. 스크롤을 계속하면 모든 470 항목을로드하는 방향으로 계속 작업하지만 그리드가 이동하면서 행이 크게 늘어납니다. 순서가 맞지 않는 경우 (예 : 격자가 8 행으로 시작되고 1 행이 75 행 뒤에 표시됨).

아마도 내 JSON 데이터에 고유 ID가 없기 때문에 idProperty 설정을 사용하여 ID ("id")를 추가했다고 생각했습니다. 안돼. 또한 도움이 될지 확인하기 위해 겹침 부분을 10 줄 추가해 보았습니다.하지만 상황을 악화시키는 것처럼 보였습니다. 알고 보니, 나는 내 JSON 데이터에 오타가 있었다

require(["dojo/_base/declare", "dojo/store/JsonRest", "dojox/data/QueryReadStore", "dgrid/OnDemandGrid", "dgrid/Keyboard", "dgrid/Selection", "dojo/domReady!"], function(declare, JsonRest, QueryReadStore, OnDemandGrid, Keyboard, Selection){ 


var store = new JsonRest({ 
    target: "perlsqllog2.pl", 
    sortParam: "sort", 
    idProperty: "id" 
}); 



var grid = new declare([OnDemandGrid, Keyboard, Selection])({ 
    store: store, 
    query: {aid: "1604" }, 
    queryRowsOverlap: 10, 
    columns: { 
     num: "ID", 
     range: "Debug", 
     uid: "SAFARI User ID", 
     ipaddress: "IP Address", 
     date: "Date" 
    }, 
}, "grid"); 

}); 

답변

0

:

여기 내 도장 코드입니다. 나는 "id"보다는 JSON에서 "id :"를 출력했고 그리드가 그것을 고유 ID로 보지 못하게했다. 분명히 dgrid는 작동시키기 위해 고유 한 ID가 필요하며 고유 한 ID가 제공되면 이제는 행복하게 작동하는 것 같습니다.