대용량 데이터를 표시하는 jqgrid가 있습니다. 데이터는 jquery ajax 호출 (jqgrid 로직 외부)을 통해 주기적으로 서버에서 검색됩니다. 검색된 데이터는 이전에 재 시도 된 데이터와 비교되며 js의 var로 저장되며 jqgrid의 데이터로 사용됩니다. 서로 다르면 로컬 데이터가 새로 고쳐지고 jqgrid가 다시로드됩니다. jqgrid 데이터 유형은 jsonstring입니다.로컬 데이터 세트의 jqgrid triggerToolbar 대신
이 솔루션은 사용자가 필터 도구 모음에 필터 값을 가지고있는 경우를 제외하고는 아주 잘 작동합니다. 난 loadcomplete 이벤트 필터를 트리거 0.1 초 타이머를 설정하기 때문에 필터 문자열이 존재하는 경우, 전체의 계통이 리프레시는 다음과 같다 : 사용자가 필터링 때문에
- 20 레코드 (원래있는 jqGrid 표시했다 분리 된 ajax 호출로 서버에서 폴링 된 데이터가 브라우저에 저장된 것과 다르므로
- jqgrid가 새로 고쳐집니다.
- jqgrid는 매우 짧은 모든 새로운 데이터를 표시합니다 일정 기간
- jqgrid 필터가 loadcomplete 내에서 트리거됩니다. 화면에 20 개의 레코드가 다시 표시됩니다.
기술적으로 아직 작동 중입니다. 그리드가 시각화되기 전에 jsonstring에 로컬로 필터를 다시 적용 할 수있는 방법이 있습니까? 다른 방법을 사용하면 jqgrid를 한 번만 시각화 할 수 있습니다. 그러면 새로운 jsonsting을로드하고 동시에 필터 상자에 배치 된 필터를 적용하게됩니다.
감사 casbby
업데이트 : 그리드를 다시로드하는 동안 필터를 적용 할 올렉의 솔루션 중 하나를 시도
. 이것은 demo입니다. 데이터 유형이 로컬 인 한 완벽하게 작동했습니다. 내 페이지 실제로 눈금을 다시로드 할 jsonstring 데이터 형식을 사용합니다. 코드에서이 함수는 jsonstring에 적용되는 것 같습니다. 외부 jquery 아약스가 서버에서 데이터를 성공적으로 검색 한 후 이러한 함수를 호출하기를 바랬다.
function filter() {
var searchFiler = $("#filter").val(), f;
if (searchFiler.length === 0) {
grid[0].p.search = false;
$.extend(grid[0].p.postData,{filters:""});
}
f = {groupOp:"OR",rules:[]};
f.rules.push({field:"name",op:"cn",data:searchFiler});
f.rules.push({field:"note",op:"cn",data:searchFiler});
grid[0].p.search = true;
$.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
grid.trigger("reloadGrid",[{page:1,current:true}]);
}
누군가 나를 도울 수 있습니까? 많은 감사.
자세한 설명을 읽어 주셔서 감사합니다. 나는 인정해야한다. Tony는 jqgrid를 만드는 훌륭한 일을 해왔지만 jqgrid에 대한 자세한 정보는 게시물을 읽었습니다. – casbby
나는 서버에서 폴링 된 데이터를 처리하기 위해 데이터 유형 local을 사용하려고 시도했지만 그리드는 항상 공백으로 렌더링됩니다. 문서의 기본 로컬 판독기가 어떻게 작동하는지 생각할 수 없습니다. 모든 dataype 로컬 예제에서 필자는 열 필드 값의 배열을 포함하는 배열 만 볼 수 있습니다. 기본 localReader에는 {root : "rows", page : "page", total : "total", records : "records", repeatitems : false, cell : "cell", id : "id"} 형식이 필요합니다. 리피터 타임을 제외하고는 jsonreader와 같습니다. 내가 놓친 게 있니? – casbby
@casbby : 서버가 반환하는 데이터 예제를 게시하는 것이 쉽지 않은가요? jqGrid를 정의하는 코드를 포함하면 다른 열린 질문을 지울 수 있습니다. 만약 당신이'datatype : "jsonstring", datastr : mydata' 대신에'datatype : "local", data : mydata, localReader : {repeatitems : false}'시도 할 수 있다고 생각한다면 – Oleg