2010-04-30 8 views
4

몇 가지 다른 필드와 함께 jqGrids 몇 개가있는 페이지가 있습니다. 전체 페이지를 채우기 위해 사용해야하는 데이터가있는 JSON 객체를 가져 오는 AJAX 호출을 하나 만들고 싶습니다.jqgrid가 처음에 데이터를로드하는 것을 어떻게 억제 할 수 있습니까?

그래서 저는 직접 전화를 걸어 "다른 필드"를 채운 다음 반환 된 기본 JSON 개체로부터 몇 가지 컬렉션을 가져 와서 해당 jqGrids 각각에 "수동으로"채 웁니다.

이 작업이 많이 있었지만 jqGrid가 AJAX 요청 자체를 시도하는 것을 멈추게 할 수는 없습니다. jqGrid가 초기화 될 때 AJAX 호출을 시도하지 않도록 지시하는 방법이 없어야합니까?

나는 비슷한 질문이 여기에 질문을 발견 : How to suppress jqgrid from initially loading data?

그러나 나는 포스터를 위해 그것을 해결하는 옵션이 없습니다.

일부 사용자는 초기화시 자체 데이터를 가져 오지 않고이 플러그인을 사용하려고 할 수 있습니다. 문서 (wiki - options)의 어딘가에서 옵션이 누락 되었습니까?

감사합니다.

답변

8

jqGrid가 데이터 자체를로드하지 않는다고하는 쉬운 방법이 있습니다. jqGrid 옵션으로 datatype: 'local'을 사용해야합니다. 이 옵션은 addRowData 또는 addJSONData과 같은 기능으로 그리드 데이터를 직접 채울 계획이라고 말합니다 (예제는 jqGrid tableToGrid "options" parameter 참조). loadComplete 콜백 내부의 표에있는 데이터를 채울 수도 있습니다. 이는 jqGrid가 datatype: 'local'의 경우에도이 함수를 호출하기 때문입니다.

addJSONData의 매개 변수로 입력 한 데이터는 jsonReaderjsonmap을 사용하여 읽음 (구문 분석)됩니다. 그것은 당신에게 좋은 방법을 많이 서버에서받은 데이터를 조작하지 않습니다. 그 대신 jqGrid에 대해 jsonmap에 올바른 데이터 매핑 만 지정하면 충분합니다. Mapping JSON data in JQGrid에서 찾을 수있는 데이터 매핑의 복잡한 복잡한 예입니다.

데이터 전송 최적화에 대해 생각하는 경우 http://trirand.com/blog/jqgrid/jqgrid.html 데모 페이지의 "데이터 매핑"\ "데이터 최적화"부분을 참조하십시오. 아이디어는 테이블의 행을 나타내는 데이터 구조를 문자열 배열로 대체하는 것입니다. 그러면 데이터 전송을 압축하는 서버에서 클라이언트로 열 이름 (구조의 파일 이름)이 전송되지 않습니다. 이러한 종류의 최적화를 사용하면 다른 방법과 마찬가지로 훨씬 더 많은 시간을 절약 할 수 있습니다. 웹 서버에서 데이터 압축을 켜는 것을 잊지 마십시오. 또한 데이터 전송 크기를 크게 줄일 수 있습니다. 내가 addJSONData() 트리거 ('reloadGrid')의 사용과 기능의 사용을 비교 어디에 내 토론 질문 Should one replace the usage addJSONData of jqGrid to the usage of setGridParam(), and trigger('reloadGrid')?을 통해보고 추천 할 수 끝에

. 한 번에 하나의 테이블을 더 많이 업데이트하려는 경우 트리거 ('reloadGrid')은 한 번만 호출하면 마치 천천히 수행되지만 프로그램의 구조는 훨씬 더 쉽습니다. 트리거 'reloadGrid'). 두 경우의 총 시간을 비교해 보면 데이터 전송이 병목 현상이 아닌 것일 수 있습니다. 따라서 두 경우 모두 페이지 로딩 시간이 거의 변하지 않고 유지 될 수 있습니다. 가장 좋은 방법은 두 가지 경우 모두에서 시간을 망쳐 놓고 간단한 프로그램 디자인에 대해 지불 할 준비가되어있는 금액을 결정하는 것입니다.

+0

제안 해 주셔서 감사합니다.'local'데이터 유형은 아름답게 작동했습니다. 나는 jsonReader와 jsonmap을 살펴 보려고했다. 나는 링크를 주셔서 감사합니다. – Steve

+0

멋진 팁 - 감사합니다. –

관련 문제